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 上一篇,下一篇文章实现代码与原理说明
May 09 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
Jan 22 PHP
PHP中应该避免使用同名变量(拆分临时变量)
Apr 03 PHP
PHP微信公众号自动发送红包API
Jun 01 PHP
PHP实现JS中escape与unescape的方法
Jul 11 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
一个简单的php MVC留言本实例代码(必看篇)
Sep 22 PHP
PHP chr()函数讲解
Feb 11 PHP
基于laravel where的高级使用方法
Oct 10 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
Oct 14 PHP
PHP常用函数之获取汉字首字母功能示例
Oct 21 PHP
PHP中SESSION过期设置
Mar 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
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
Java中final关键字详解
2015/08/10 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
Vue实现导出excel表格功能
2018/03/30 Javascript
jquery的$().each和$.each的区别
2019/01/18 jQuery
Node.js Stream ondata触发时机与顺序的探索
2019/03/08 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
Python urlopen 使用小示例
2008/09/06 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
中文系师范生自荐信
2013/10/01 职场文书
大学毕业生工作的自我评价
2013/10/01 职场文书
水务局局长岗位职责
2013/11/28 职场文书
会计专业自荐信范文
2013/12/02 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
年级组长自我鉴定
2014/02/22 职场文书
2014年乡镇植树节活动方案
2014/02/28 职场文书
幼儿园秋游感想
2014/03/12 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
安全第一课观后感
2015/06/18 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
redis内存空间效率问题的深入探究
2021/05/17 Redis