Laravel9 API开发统一格式化数据(3)
API开发数据输出的格式:
{
msg:'',
code:200,
data:[]
}
App\Traits目录下新建:ApiResponse.php
<?php
namespace App\Traits;
use Illuminate\Http\Response as FoundationResponse;
trait ApiResponse
{
protected $statusCode = FoundationResponse::HTTP_OK;
/**
* @return mixed
*/
public function getStatusCode()
{
return $this->statusCode;
}
/**
* @param $statusCode
* @return $this
*/
public function setStatusCode($statusCode)
{
$this->statusCode = $statusCode;
return $this;
}
/**
* 格式化统一输出
* @author wilson lee
* @param $code 错误代码:0 | 200 正常
* @param $msg 提示信息,可自定义,否则根据CODE码返回
* @param $data 返回数据
*/
public function formatUniteResult($data, $message = '', $code = 200)
{
$this->setStatusCode($code ?? 200);
$result = [
'code' => $this->statusCode,
'msg' => $message,
'data' => $data,
];
$result['msg'] = (empty($message)) ? (($code == 200 || $code == 0) ? 'success' : 'fail') : $message;
$data = json_decode(json_encode($data), true);
if (!empty($data) && is_array($data)) {
if (array_key_exists('data', $data)) {
$result['count'] = $data['total'];
$result['data'] = $data['data'];
} else {
$result['data'] = $data;
}
}
return response()->json($result);
}
}
<?php
namespace App\Http\Controllers;
use App\Traits\ApiResponse;//统一处理数据格式
use Illuminate\Http\Request;
/**
* Categories 接口控制器
* @desc 分类模块
*/
class CategoriesController extends Controller
{
use ApiResponse; //统一处理数据格式--引用
/**
* 分类:新增单条数据
* @desc 权限:-
* @return int 新增ID
* @method POST
*/
public function store(Request $request)
{
// 忽略处理逻辑
return $this->formatUniteResult($request);
}
}
注意调用trait方法:
1、use App\Traits\ApiResponse;//统一处理数据格式
2、use ApiResponse; //统一处理数据格式–引用
3、$this->formatUniteResult($array) 用的是$this->
供新手编写API学习。
本作品采用《CC 协议》,转载必须注明作者和本文链接