现在使用比较多的api风格是restful设计风格,也就是响应时的json数据应该包含有data数据、msg响应信息、code响应状态码、type数据格式等这几个信息。
而且数据响应的格式都应该保持格式一致,所以就涉及到响应数据的封装问题,封装好响应模式后,以后可以直接调用。
第一步,新建公共控制器common.php,定义响应returnapi()方法的数据模式进行封装;
<?php
namespace app\controller;
use think\Response;
class Common //定义Common公共类
{
//定义标准api方法,接收请求传过来的变量
public function ReturnApi($data = [],$msg = '数据为空!',$code = 201,$type = 'json'){
//定义Result数组接收请求过来的变量
$Result = [
'code' => $code,
'msg' => $msg,
'data' => $data
];
//返回api接口,tp6 Response响应提供的create($data,$type,$code)方法本身已经定义了$data,$type,$code这三个变量;
//在这里重新封装相当于是按restful风格定义响应数据
return Response::create($Result,$type);
}
}
第二步,在其他控制器继承common控制器,涉及到响应时直接按returnapi()的数据风格返回。
<?php
declare (strict_types = 1);
namespace app\controller;
use app\model\Admin as ModelAdmin;
use think\Request;
class Admin extends Common//继承公共控制器Common
{
/**
* 显示资源列表
*
* @return \think\Response
*/
public function index()
{
//将查询结果赋值给你变量$data
//使用field()方法可以返回指定字段信息并重新排序
//使用paginate()方法可以对查询结果进行分页,括号里面的参数代表每页数值,返回的数据包括了数据汇总信息
$data = ModelAdmin::where('isdelete',0)
->field('id,admintype_id,realname,mobile,email,lastip')
->paginate(10);
//调用Common公共类中的标准api数据格式ReturnApi()函数,并返回标准api
//要判断数据集是否为空不能直接用empty方法判断,而是用isEmpty()方法判断
if($data -> isEmpty()){
return $this->ReturnApi();//如果数据为空,返回默认响应
}else{
//如果数据不为空,返回以下信息
return $this->ReturnApi($data,'数据请求成功!',200,'json');
}
}