由于项目中使用自已开发的php框架,发现没有restful功能.
restful架构
如下图,简单的CURD功能,以资源为定位
class Blog
{
/**
* 显示资源列表
*
* @return \think\Response
*/
public function index()
{
$list = Blogs::all();
return json($list);
}
/**
* 保存新建的资源
*
* @param \think\Request $request
* @return \think\Response
*/
public function save(Request $request)
{
$data = $request->param();
$result = Blogs::create($data);
return json($result);
}
/**
* 显示指定的资源
*
* @param int $id
* @return \think\Response
*/
public function read($id)
{
$data = Blogs::get($id);
return json($data);
}
/**
* 保存更新的资源
*
* @param \think\Request $request
* @param int $id
* @return \think\Response
*/
public function update(Request $request, $id)
{
$data = $request->param();
$result = Blogs::update($data, ['id' => $id]);
return json($result);
}
/**
* 删除指定资源
*
* @param int $id
* @return \think\Response
*/
public function delete($id)
{
$result = Blogs::destroy($id);
return json($result);
}
}
框架的更新
框架比较简单
url.com/{control}/{action} 或 url.com/index.php/{control}/{action}即可访问
我们要实现用户系统的用户添加,通过有资源有
查看全部用户 /user/read/
查看指定用户 /user/read/1
更新指定用户 /user/edit/1
删除指定用户 /user/delete/1
除了control和action的path,其实后面便可以按顺序注入
把path后台的参数,注入进去即可。
功能如下:
PHP_INO
有些朋友忘记设置nginx的php info功能,是用不了/index.php/index/index这种的
关键配置
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
完整配置:
location ~ [^/]\.php(/|$) {
fastcgi_pass 172.20.0.3:9000;
#fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
php.ini配置文件
cgi.fix_pathinfo=0 ;这个要设置为0