如何优雅的定义返回给客户端错误码和信息

各位,平时你们的项目都是如何定义错误码及错误信息的,比如要返回给客户端一个[‘code’ => 234, ‘message’ => ‘您所需要的* * * 未找到’],这里的 234,和后面的 ‘您所需要的 * * * 未找到’,你们都是在哪里定义的呢,如果直接写在控制器,感觉不是跟优雅,应该需要把这些错误码和信息的文件单独提出来放到一个文件吧,具体应该怎么写最优雅呢?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 6

我会在App同级下面新建一个Infrastructure文件,里面放Code、Response文件夹,对应文件夹里面放对应的ACode.php和AResponse.php 分别来做你说的事情 ,这部分也可以有个对应的CommonCode.php,CommonResponse.php

3年前 评论

简单点,你可以直接throw new HttpException(400, 'xxxxx|203');然后重写异常处理。
如果说每个错误码都要严格规定统一就要封装一个类。

3年前 评论

composer 安装扩展

"kayex/http-codes": "^1.1",
"marcin-orlowski/laravel-api-response-builder": "^7.1"

程序返回

 return ResponseBuilder::asSuccess(ApiCode::HTTP_OK)
   ->withHttpCode(ApiCode::HTTP_OK)
   ->withData($role)
   ->withMessage(__('message.common.search.success'))
   ->build();

自定义其他返回值

use Kayex\HttpCodes;

class ApiCode extends HttpCodes
{
    const HTTP_UNPROCESSABLE_ENTITY = 422;
    const HTTP_TOO_MANY_REQUEST = 429;
    const HTTP_TOKEN_EXPIRED = 430;
}
3年前 评论

直接在app/Exceptions文件夹中新建自己的异常类,如MyException,然后在这个异常里面定义一堆codemessage的对应关系(可以参考HttpRsponse类中,定义响应码与响应消息的方式)。然后在控制器或者其他位置,直接throw new \App\Exceptions\MyException(4444);完事

3年前 评论

都写在 config/code.php 然后

return response()->json([
    'code' => '1234',
    'message' => config('code.1234')
]);
3年前 评论

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