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一些公用函数的集合
Mar 27 PHP
php 运行效率总结(提示程序速度)
Nov 26 PHP
PHP常用代码大全(新手入门必备)
Jun 29 PHP
PHP If Else(elsefi) 语句
Apr 07 PHP
PHP中操作ini配置文件的方法
Apr 25 PHP
PHP常用技术文之文件操作和目录操作总结
Sep 27 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
Dec 23 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
PHP+Mysql无刷新问答评论系统(源码)
Dec 20 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验证码类实例分享
2013/12/27 PHP
destoon之一键登录设置
2014/06/21 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
一段批量给页面上的控件赋值js
2010/06/19 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
Python实现把数字转换成中文
2015/06/29 Python
运动检测ViBe算法python实现代码
2018/01/09 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
python实现车牌识别的示例代码
2019/08/05 Python
在vscode中配置python环境过程解析
2019/09/28 Python
python 弧度与角度互转实例
2020/04/15 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
十佳大学生事迹材料
2014/01/29 职场文书
信息管理专业自荐书
2014/06/05 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
创先争优公开承诺书
2014/08/30 职场文书
公安个人四风问题对照检查及整改措施
2014/10/28 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle