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 相关文章推荐
杏林同学录(七)
Oct 09 PHP
php checkbox 取值详细说明
Aug 19 PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
Mac环境下php操作mysql数据库的方法分享
May 11 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
Dec 17 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
Nov 17 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
jQuery解决iframe高度自适应代码
2009/12/20 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
python读写二进制文件的方法
2015/05/09 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
python爬虫正则表达式之处理换行符
2018/06/08 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
Python版中国省市经纬度
2020/02/11 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
python Selenium 库的使用技巧
2020/10/16 Python
成龙洗发水广告词
2014/03/14 职场文书
参观接待方案
2014/03/17 职场文书
暑假安全教育广播稿
2014/09/10 职场文书
授权委托书
2014/09/17 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
《绝招》教学反思
2016/02/20 职场文书
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android
python 字典和列表嵌套用法详解
2021/06/29 Python
python运行脚本文件的三种方法实例
2022/06/25 Python