Laravel默认的验证失败后的响应格式如下。有时这种格式不符合自己的要求,需要修改格式。//status422{"message":"Thegivendatawasinvalid.","errors":{"url":["urlinvalidformat"]}}当Request验证失败时,会抛出ValidationException,由全局异常处理程序类处理。Handler继承自Illuminate\Foundation\Exceptions\Handler。框架中的Handler类调用render来处理异常并做出响应。对于ValidationException异常,会调用convertValidationExceptionToResponse方法进行处理。代码保护函数convertValidationExceptionToResponse(ValidationException$e,$request){if($e->response){return$e->response;返回$request->expectsJson()?$this->invalidJson($request,$e):$this->invalid($request,$e);}expectsJson()区分是ajax请求还是form请求,然后分别处理。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":["urlinvalidformat"]}}
