前言
我们平时开发新项目api接口的时候总是要先自定义自己的响应数据格式,但是每个人的风格习惯不同,导致开发人员封装的响应数据格式不统一,而且需要花时间去重复写。本篇文章主要是统一 API 开发过程中「成功」、「失败」以及「异常」情况下的响应数据格式。
封装响应
为了方便调整适合自己的响应格式,这里使用自定义trait来实现
我们新建文件application/common/traits/CustomResponse
(基于tp5,其他版本类似),文件内容直接复制下面的代码然后保存,注意修改为你的命名空间:
<?php
namespace app\common\traits;
use think\exception\HttpResponseException;
use think\Response;
trait CustomResponse{
//默认输出类型,可选择json、jsonp、xml、html、view、redirect等
//参考thinkphp文档https://doc.thinkphp.cn/v5_1/xiangyingshuchu.html
protected $type = 'json';
/**
* 操作成功返回的数据.
*
* @param mixed $data 要返回的数据
* @param string $msg 提示信息
* @param int $code 错误码,默认为1
* @param string $type 输出类型
* @param array $header 发送的 Header 信息
*/
protected function success($data = null, $msg = '请求成功', $code = 200, array $header = [])
{
$this->result($msg, $data, $code, $header, 'success');
}
/**
* 操作成功返回默认message
*
* @param string $msg 提示信息
*/
protected function ok($msg = '请求成功')
{
$this->result($msg,null, 200);
}
/**
* 操作失败返回的数据.
*
* @param string $msg 提示信息
* @param mixed $data 要返回的数据
* @param int $code 错误码,默认为0
* @param string $type 输出类型
* @param array $header 发送的 Header 信息
*/
protected function fail($msg = '请求失败', $data = null, $code = 500, array $header = [])
{
$this->result($msg, $data, $code, $header, 'fail');
}
/**
* 系统异常返回的数据.
*
* @param string $msg 提示信息
* @param mixed $data 要返回的数据
* @param int $code 错误码,默认为0
* @param string $type 输出类型
* @param array $header 发送的 Header 信息
*/
protected function error($msg = '系统异常', $data = null, $code = 500, array $header = [])
{
$this->result($msg, $data, $code, $header, 'error');
}
/**
* BadRequest
*
*/
protected function errorBadRequest()
{
$this->result('400 Bad Request',null, 400, [], 'error');
}
/**
* Unauthorized
*
*/
protected function errorUnauthorized()
{
$this->result(