namespace app\api\controller;
use think\Controller;
class Test extends Controller
{
public function index()
{
return [
'status' => 0,
'msg' => 'success'
];
}
//put 需要定义$id
public function update($id = '')
{
$put_data = input('put.');
$data = array(
'id' => $id,
'put_data' => $put_data
);
return $data;
}
//delete 需要定义$id 然后用提交的id值替换
public function delete($id = '')
{
$data = array(
'id' => $id,
);
return $data;
}
//post 需要定义$id
public function save()
{
$post_data = input('post.');
$data = array(
'post_data' => $post_data
);
return $data;
}
}
return [
//设置返回数据类型为json格式
'default_return_type'=>'json',
];
在thinkphpwu/application目录下有一个route.php文件
在路由配置文件中使用__rest__添加资源路由定义:
return [
// 定义资源路由
'__rest__'=>[
// 指向index模块的blog控制器
'blog'=>'index/blog',
],
// 定义普通路由
'hello/:id'=>'index/hello',
]
设置后会自动注册7个路由规则
标识 | 请求类型 | 生成路由规则 | 对应操作方法(默认) |
---|---|---|---|
index | GET | blog | index |
create | GET | blog/create | create |
save | POST | blog | save |
read | GET | blog/:id | read |
edit | GET | blog/:id/edit | edit |
update | PUT | blog/:id | update |
delete | DELETE | blog/:id | delete |
具体指向的控制器由路由地址决定,例如上面的设置,会对应index模块的blog控制器,你只需要为Blog控制器创建以上对应的操作方法就可以支持下面的URL访问:
http://serverName/blog/
http://serverName/blog/128
http://serverName/blog/28/edit
Blog控制器中的对应方法如下:
namespace app\index\controller;
class Blog {
public function index(){
}
public function read($id){
}
public function edit($id){
}
}
具体代码如下:
//引用think的路由底层Route类
use think\Route;
//设置路由
//get方式
Route::get('test', 'api/test/index');
//put方式
Route::put('test/:id', 'api/test/update');
//delete方式
Route::delete('test/:id', 'api/test/delete');
//post方式
//Route::post('test', 'api/test/save');
//resource方式 对应7种方式
Route::resource('test', 'api/test');
Route::resource(‘test’, ‘api/test’); 这种方式包含了post方式请求,自动查找对应的save方法
请求路径为http://app.thinkphpwu.com/test/888
对应的888表示id,put_data就是我们提交的数据,后台可以根据自身的业务进行修改操作
在application目录中的公共函数common.php 文件 增加 show方法
/**
* 通用化API接口数据输出
* @param int $status 业务状态码
* @param string $message 信息提示
* @param [] $data 数据
* @param int $httpCode http状态码
* @return array
*/
function show($status, $message, $data = [], $httpCode = 200)
{
$data = [
'status' => $status,
'message' => $message,
'data' => $data,
];
return json($data, $httpCode);
}
在需要返回给前端的函数中调用show方法,比如我们在test控制器的save方法中调用show,代码如下:
public function save()
{
$post_data = input('post.');
$data = array(
'post_data' => $post_data
);
return show(0, '保存成功!', $data);
}