php修改响应码,Laravel 修改验证异常的响应格式实例代码详解

本文介绍了如何修改Laravel框架中验证异常的默认响应格式。当验证失败时,ValidationException会被Handler类捕获。通过重写Handler类的invalidJson方法,可以定制化的返回包含错误代码和详细错误信息的JSON响应。示例代码展示了将响应格式改为包含`code`字段和错误详情的JSON结构。
摘要由CSDN通过智能技术生成

Laravel 默认验证不通过后响应格式如下,有时此格式并不满足自己要求,需要修改格式。

// status 422

{

"message":"The given data was invalid.",

"errors":{

"url":[

"url 无效的格式"

]

}

}

当 Request 验证失败时会抛出 ValidationException异常,最终交由全局异常Handler类处理。Handler继承自Illuminate\Foundation\Exceptions\Handler,框架中的Handler类调用render处理异常并进行响应,针对于ValidationException异常又调用了convertValidationExceptionToResponse方法来处理。代码

protected function convertValidationExceptionToResponse(ValidationException $e, $request)

{

if ($e->response) {

return $e->response;

}

return $request->expectsJson()

? $this->invalidJson($request, $e)

: $this->invalid($request, $e);

}

expectsJson()区分是 ajax 请求还是表单请求,然后分别做处理。

protected function invalidJson($request, ValidationException $exception)

{

return response()->json([

'message' => $exception->getMessage(),

'errors' => $exception->errors(),

], $exception->status);

}

追踪到invalidJson(),发现他就是用来处理参数验证异常响应格式的方法。在App\Exceptions\Handler类中,重写invalidJson()方法即可。

protected function invalidJson($request, ValidationException $exception)

{

return response()->json([

'code' => 0,

'data' => $exception->errors(),

], $exception->status);

}

最终,验证失败的响应格式如下

// status 422

{

"code": 0,

"data":{

"url":[

"url 无效的格式"

]

}

}

总结

到此这篇关于Laravel 修改验证异常的响应格式的代码详解的文章就介绍到这了,更多相关Laravel异常响应格式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值