ThinkPHP6项目基操(5.封装API数据格式及业务状态码统一管理)
日期: 2020-11-29 分类: 跨站数据测试 520次阅读
封装API数据格式及业务状态码统一管理
一、封装API数据返回格式
我们在返回API数据的时候,一般是使用json格式输出,如上节处理找不到控制器或方法返回数据:
public function __call($name, $arguments)
{
    // 如果是API模块,需要输出API的数据格式(一般是json)
    // 如果是模板引擎的方式,需要输出自定义错误页面
    $result = [
        'status' => 0,
        'message' => '找不到该方法',
        'result' => null
    ];
    return json($result, 400);
}
 
这种方式是在设计API接口时用的比较多的,为了统一后台返回的数据格式,方便前端统一处理,我们可以设计通用化的API数据格式。
在app目录有一个common.php文件,这个是公用的文件,可以在这里定义公用的方法:
<?php
// 应用公共文件
/**
 * 通用化API数据格式输出
 * @param $status
 * @param string $message
 * @param array $data
 * @param int $httpStatus
 * @return \think\response\Json
 */
function show($status, $message = 'error', $data = [], $httpStatus = 200){
    $result = [
        "status" => $status,
        "message" => $message,
        "result" => $data
    ];
    return json($result, $httpStatus);
}
 
| 参数 | 作用 | 默认值 | 
|---|---|---|
$status | 业务代码 | |
$message | 返回消息 | error | 
$data | 返回数据 | [ ] | 
$httpStatus | HTTP状态码 | 200 | 
我们修改下 BaseController 控制器的 __call 方法:
public function __call($name, $arguments)
{
    // 如果是API模块,需要输出API的数据格式(一般是json)
    // 如果是模板引擎的方式,需要输出自定义错误页面
    /*$result = [
        'status' => 0,
        'message' => '找不到该方法',
        'result' => null
    ];
    return json($result, 400);*/
    return show(0, "找不到{$name}方法", null, 404);
}
 
再次访问不存在的方法test1:
 
二、业务状态码统一管理
如上代码中的业务状态码是在调用common方法时传递的,当我们业务逻辑复杂的时候,这个状态码会很多,为了避免冲突和方便管理维护,我们可以统一配置在一个地方:
 在config目录新建一个status.php文件用来存放业务代码配置。
文件名可以随意,在
config目录下文件都会自动加载,使用config("文件名.字段名")即可获取配置值,如config("status.action_not_found")
文件内容如下,具体状态码可以根据具体的业务场景自行设置:
<?php
/**
 * 该文件主要存放业务状态码相关的配置
 */
return [
    "success" => 1,
    "error" => 0,
    "not_login" => -1,
    "user_is_register" => -2,
    "action_not_found" => -3
];
 
然后我们修改下 BaseController 的 __call 方法:
return show(config("status.action_not_found"), "找不到{$name}方法", null, 404);
 
再访问不存在的方法:
 
 除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
上一篇: java复习题
精华推荐
