Formato de dados da API do pacote e gerenciamento unificado de códigos de status de negócios
1. Formato de retorno de dados da API do pacote
Quando retornamos dados da API, geralmente usamos o formato json para a saída. Como na seção anterior, não podemos encontrar o controlador ou método para retornar os dados:
public function __call($name, $arguments)
{
// 如果是API模块,需要输出API的数据格式(一般是json)
// 如果是模板引擎的方式,需要输出自定义错误页面
$result = [
'status' => 0,
'message' => '找不到该方法',
'result' => null
];
return json($result, 400);
}
Esse método é mais usado ao projetar interfaces de API. Para unificar o formato de dados retornado pelo segundo plano e facilitar o processamento unificado do front end, podemos projetar um formato de dados de API generalizado.
app
Há um common.php
arquivo no diretório , este é um arquivo público, você pode definir métodos públicos aqui:
<?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 | efeito | Padrões |
---|---|---|
$status |
Código comercial | |
$message |
Mensagem de retorno | erro |
$data |
Dados de retorno | [] |
$httpStatus |
Código de status HTTP | 200 |
Modificamos o método do 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 o método inexistente test1 novamente:
Dois, gerenciamento unificado de códigos de status de negócios
O código de status de negócios no código acima é passado quando o método comum é chamado. Quando nossa lógica de negócios é complexa, haverá muitos códigos de status. Para evitar conflitos e facilitar o gerenciamento e a manutenção, podemos configurá-lo em um só lugar: crie um novo
no config
diretório status.php
O arquivo é usado para armazenar a configuração do código de negócios.
O nome do arquivo pode ser arbitrário, os
config
arquivos no diretório serão carregados automaticamente e oconfig("文件名.字段名")
valor de configuração pode ser obtido usando-o , comoconfig("status.action_not_found")
O conteúdo do arquivo é o seguinte, o código de status específico pode ser definido de acordo com o cenário de negócios específico:
<?php
/**
* 该文件主要存放业务状态码相关的配置
*/
return [
"success" => 1,
"error" => 0,
"not_login" => -1,
"user_is_register" => -2,
"action_not_found" => -3
];
Em seguida, modificamos BaseController
o __call
método:
return show(config("status.action_not_found"), "找不到{
$name}方法", null, 404);
Visite o método inexistente novamente: