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实现多服务器session共享之NFS共享的方法
Mar 16 PHP
PHP CKEditor 上传图片实现代码
Nov 06 PHP
pdo中使用参数化查询sql
Aug 11 PHP
php使用Cookie控制访问授权的方法
Jan 21 PHP
PHP截取IE浏览器并缩小原图的方法
Mar 04 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 PHP
PHP自定义函数实现格式化秒的方法
Sep 14 PHP
PHP实现动态获取函数参数的方法示例
Apr 02 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 PHP
PHP使用ajax的post方式下载excel文件简单示例
Aug 06 PHP
php实现大文件断点续传下载实例代码
Oct 01 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中redis的用法深入解析
2014/02/20 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
Python搜索引擎实现原理和方法
2017/11/27 Python
django表单实现下拉框的示例讲解
2018/05/29 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
Python自动创建Excel并获取内容
2020/09/16 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
中国旅游网站:途牛旅游网
2019/09/29 全球购物
高中毕业生生活的自我评价
2013/12/08 职场文书
《影子》教学反思
2014/02/21 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
保险经纪人求职信
2014/03/11 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
购房委托书
2014/10/15 职场文书
考研复习计划
2015/01/19 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers