Laravel编写API自定义错误码
2019-09-25 本文已影响0人
骑代码奔小康
- 在写接口的过程中不同的错误都会有不同的错误码,成功200或者0,参数错误400,找不到404等
- 有可能在项目中会自定义错误码,好看到错误码就知道是哪里出错
- 这里就直接用一个文件来统一管理错误码
- 类中定义常量的方式来定义错误码和错误描述
创建错误码管理文件
创建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);
}
}