Laravel 修改验证异常的响应格式实例代码详解
Laravel默认验证不通过后响应格式如下,有时此格式并不满足自己要求,需要修改格式。
//status422 { "message":"Thegivendatawasinvalid.", "errors":{ "url":[ "url无效的格式" ] } }
当Request验证失败时会抛出ValidationException异常,最终交由全局异常Handler类处理。Handler继承自Illuminate\Foundation\Exceptions\Handler,框架中的Handler类调用render处理异常并进行响应,针对于ValidationException异常又调用了convertValidationExceptionToResponse方法来处理。代码
protectedfunctionconvertValidationExceptionToResponse(ValidationException$e,$request) { if($e->response){ return$e->response; } return$request->expectsJson() ?$this->invalidJson($request,$e) :$this->invalid($request,$e); }
expectsJson()区分是ajax请求还是表单请求,然后分别做处理。
protectedfunctioninvalidJson($request,ValidationException$exception) { returnresponse()->json([ 'message'=>$exception->getMessage(), 'errors'=>$exception->errors(), ],$exception->status); }
追踪到invalidJson(),发现他就是用来处理参数验证异常响应格式的方法。在App\Exceptions\Handler类中,重写invalidJson()方法即可。
protectedfunctioninvalidJson($request,ValidationException$exception) { returnresponse()->json([ 'code'=>0, 'data'=>$exception->errors(), ],$exception->status); }
最终,验证失败的响应格式如下
//status422 { "code":0, "data":{ "url":[ "url无效的格式" ] } }
总结
到此这篇关于Laravel修改验证异常的响应格式的代码详解的文章就介绍到这了,更多相关Laravel异常响应格式内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!