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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!