ThinkPHP6项目基操(5.封装API数据格式及业务状态码统一管理)

封装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);

再访问不存在的方法:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zy1281539626/article/details/110311944
今日推荐