Paquete de formato de datos de API y gestión unificada de códigos de estado comercial
1. Formato de devolución de datos de API de paquete
Cuando devolvemos datos de API, generalmente usamos el formato json para la salida. Como en la sección anterior, no podemos encontrar el controlador o el método para devolver datos:
public function __call($name, $arguments)
{
// 如果是API模块,需要输出API的数据格式(一般是json)
// 如果是模板引擎的方式,需要输出自定义错误页面
$result = [
'status' => 0,
'message' => '找不到该方法',
'result' => null
];
return json($result, 400);
}
Este método se utiliza más en el diseño de interfaces API. Para unificar el formato de datos devuelto por el fondo y facilitar el procesamiento unificado del front end, podemos diseñar un formato de datos API generalizado.
app
Hay un common.php
archivo en el directorio , este es un archivo público, puede definir métodos públicos aquí:
<?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);
}
parámetro | efecto | Defaults |
---|---|---|
$status |
Código comercial | |
$message |
Mensaje de retorno | error |
$data |
Devolver datos | [] |
$httpStatus |
Código de estado HTTP | 200 |
Modificamos el método del BaseController
controlador __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);
}
Visite el método inexistente test1 nuevamente:
Dos, gestión unificada de códigos de estado comercial
El código de estado comercial en el código anterior se pasa cuando se llama al método común. Cuando nuestra lógica comercial es compleja, habrá muchos códigos de estado. Para evitar conflictos y facilitar la administración y el mantenimiento, podemos configurarlo en un solo lugar: cree uno nuevo
en el config
directorio status.php
El archivo se utiliza para almacenar la configuración del código comercial.
El nombre del archivo puede ser arbitrario, los
config
archivos en el directorio se cargarán automáticamente y elconfig("文件名.字段名")
valor de configuración se puede obtener usándolo , comoconfig("status.action_not_found")
El contenido del archivo es el siguiente, el código de estado específico se puede configurar de acuerdo con el escenario comercial específico:
<?php
/**
* 该文件主要存放业务状态码相关的配置
*/
return [
"success" => 1,
"error" => 0,
"not_login" => -1,
"user_is_register" => -2,
"action_not_found" => -3
];
Luego modificamos bajo BaseController
el __call
método:
return show(config("status.action_not_found"), "找不到{
$name}方法", null, 404);
Visite el método inexistente nuevamente: