多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 原因 在新某项目开发中遇到一个问题:laravel 的验证方法会自动处理验证响应 比如登录方法: ~~~ $request->validate([ 'name' => 'required|array', 'password' => 'required|string', ]); ~~~ 验证失败时响应: status 422 ~~~ { "message": "The given data was invalid.", "errors": { "username": [ "The username field is required." ], "password": [ "The password field is required." ] } } ~~~ 我用的是ajax请求,所以我需要的是200请求的 json 错误信息 * 当时和前端商议自定义 status 就是在http body 的json 中加一个code状态,每次响应都是http 200 * 查阅资料后发现只要在 Exceptions 添加对应 exception 的处理方法就ok了 ### 修改方法: * 修改文件:app/Exceptions/Hander.php * 在这个文件中添加 render 方法重写父类的 render ~~~ /** * @param $request * @param Throwable $exception * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Response|\Symfony\Component\HttpFoundation\Response * @throws Throwable */ public function render($request, Throwable $exception) { if($request->ajax() || $request->wantsJson()){ $result = [ "code"=>422, "msg"=>array_values($exception->errors())[0][0], "data"=>"" ]; return response()->json($result); } return parent::render($request, $exception); } ~~~ 就OK了