现在使用比较多的api风格是restful设计风格,也就是响应时的json数据应该包含有data数据、msg响应信息、code响应状态码、type数据格式等这几个信息。
而且数据响应的格式都应该保持格式一致,所以就涉及到响应数据的封装问题,封装好响应模式后,以后可以直接调用。
第一步,新建公共控制器common.php,定义响应returnapi()方法的数据模式进行封装;
<?phpnamespace 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()的数据风格返回。
<?phpdeclare (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');}}