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


Posted in PHP onMay 25, 2020

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异常响应格式内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
php设计模式 Adapter(适配器模式)
Jun 26 PHP
关于初学PHP时的知识积累总结
Jun 07 PHP
php使浏览器直接下载pdf文件的方法
Nov 15 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 PHP
php中rename函数用法分析
Nov 15 PHP
php页面缓存方法小结
Jan 10 PHP
PHP中利用sleep函数实现定时执行功能实现代码
Aug 25 PHP
php实现的AES加密类定义与用法示例
Jan 29 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 PHP
实例讲解PHP表单处理
Feb 15 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 PHP
PHP常见的序列化与反序列化操作实例分析
Oct 28 PHP
tp5.1 框架查询表达式用法详解
May 25 #PHP
tp5.1 框架数据库高级查询技巧实例总结
May 25 #PHP
thinkphp5.1 框架导入/导出excel文件操作示例
May 25 #PHP
thinkphp5.1框架模板赋值与变量输出示例
May 25 #PHP
thinkphp5.1 框架钩子和行为用法实例分析
May 25 #PHP
php7 参数、整形及字符串处理机制修改实例分析
May 25 #PHP
php7 错误处理机制修改实例分析
May 25 #PHP
You might like
php IP转换整形(ip2long)的详解
2013/06/06 PHP
php微信公众平台开发之获取用户基本信息
2015/08/17 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
javascript Prototype 对象扩展
2009/05/15 Javascript
一个基于jquery的图片切换效果
2010/07/06 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
python 正确保留多位小数的实例
2018/07/16 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
Jmeter调用Python脚本实现参数互相传递的实现
2021/01/22 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
What is view? why do we have view?
2012/06/22 面试题
记者岗位职责
2014/01/06 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
电话客服专员岗位职责
2014/06/28 职场文书
武夷山导游词
2015/02/03 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
父亲去世追悼词
2015/06/23 职场文书
小学运动会加油词
2015/07/18 职场文书