Laravel编写API自定义错误码

2019-09-25  本文已影响0人  骑代码奔小康
  1. 在写接口的过程中不同的错误都会有不同的错误码,成功200或者0,参数错误400,找不到404等
  2. 有可能在项目中会自定义错误码,好看到错误码就知道是哪里出错
  3. 这里就直接用一个文件来统一管理错误码
  4. 类中定义常量的方式来定义错误码和错误描述

创建错误码管理文件

创建ApiErrDesc.php文件,其路径为\app\Common\Err\ApiErrDesc.php

<?php

namespace app\Common\Err;

class ApiErrDesc
{
    
    /**
     * API 通用错误码
     * 可以自由的设置错误码规则
     * 精准到每个接口都可以有不同的错误码(小项目就算了)
     * 
    */

    const SUCCESS = [0, 'success'];
    const UNKNOWN_ERROR = [1, '未知错误'];
    const ERROR_URL = [404, '请求的接口不存在'];
    const ERROR_PARAMS = [400, '参数错误'];
    
    /**
     * 100-500 是定单的错误类型
    */

    /**
     * 1000-2000 是购物车的错误类型
    */

}

使用错误码

<?php

namespace App\Http\Controllers\xiaocx;

use App\Http\Controllers\BasicsController as Base;
use App\Http\Response\ResponseJson;
use App\Common\Err\ApiErrDesc; // 引入错误管理文件
use Illuminate\Support\Facades\DB;

class BannerController extends Base

{

    use ResponseJson; // 引入Trait统一返回Json的方法

    public function index(){
        // 调用失败时的返回方法
        return  $this->jsonErrorData(ApiErrDesc::ERROR_URL[0],  ApiErrDesc::ERROR_URL[1]);
        // 前台输出 {"code":404,"msg":"请求的接口不存在","data":[]}
    }
}

在Trait中使用ApiErrDesc

如果不知道Trait请看我的其它文章: Laravel 编写API封装Json格式输出

<?php

namespace app\Http\Response;

/**
 * 统一接口返回到前端的文件
 * Trait方式返回
 * php从以前到现在一直都是单继承的语言,
 * 无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait这个特性
*/

use App\Common\Err\ApiErrDesc;  // 引入错误管理文件
trait ResponseJson
{
    /**
     * 返回一个json
     * @param $code 状态码
     * @param $message 返回说明
     * @param $data 返回数据集合
     * @return false | string
    */
    private function jsonResponse($code, $message, $data){
        $content = [
            'code' => $code,
            'msg'  => $message,
            'data' => $data
        ];
        return json_encode($content);
    }
    /**
     * 成功的时候返回结果
     * @param $data 返回数据集合
     * @return false | string
    */
    public function jsonSuccessData( $data = [] ){
        // 使用错误码  ApiErrDesc::SUCCESS[0]错误码,  ApiErrDesc::SUCCESS[1]错误描述
        return $this->jsonResponse(ApiErrDesc::SUCCESS[0], ApiErrDesc::SUCCESS[1], $data);
    }

    /**
     * 失败的时候返回
     * @param $code 状态码
     * @param $message 返回说明
     * @param $data 返回数据集合
     * @return false | string
    */
    public function jsonErrorData( $code, $message, $data = [] ){
        return $this->jsonResponse($code, $message, $data);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读