thinkphp6 api 响应封装(数据查询)
2022-11-24 11:10:29
221
{{single.collect_count}}

现在使用比较多的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');}}

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}