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之第六天
Oct 09 PHP
如何分别全角和半角以避免乱码
Oct 09 PHP
PHP cron中的批处理
Sep 16 PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 PHP
Laravel 5框架学习之环境与配置
Apr 08 PHP
PHP获得数组交集与差集的方法
Jun 10 PHP
php批量删除超链接的实现方法
Oct 19 PHP
Zend Framework动作助手FlashMessenger用法详解
Mar 05 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
php安全配置记录和常见错误梳理(总结)
Mar 28 PHP
PHP实现图片压缩
Sep 09 PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 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中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
php类自动加载器实现方法
2015/07/28 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
js 与或运算符 || && 妙用
2009/12/09 Javascript
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
详解Python中的相对导入和绝对导入
2017/01/06 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
Java编程面试题
2016/04/04 面试题
心理健康教育制度
2014/01/27 职场文书
出生证明公证书
2014/04/09 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
社区禁毒工作方案
2014/06/02 职场文书
开工典礼致辞
2015/07/29 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书