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

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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 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年前 评论

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