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的header和asp中的redirect比较
Oct 09 PHP
PHP+MYSQL 出现乱码的解决方法
Aug 08 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
Feb 22 PHP
php cookies中删除的一般赋值方法
May 07 PHP
解析php获取字符串的编码格式的方法(函数)
Jun 21 PHP
CentOS安装php v8js教程
Feb 26 PHP
php实现中文字符截取防乱码方法汇总
Apr 29 PHP
php实现递归的三种基本方式
Jul 04 PHP
详解PHP序列化和反序列化原理
Jan 15 PHP
PHP中使用mpdf 导出PDF文件的实现方法
Oct 22 PHP
PHP扩展mcrypt实现的AES加密功能示例
Jan 29 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 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编程效率 引入缓存机制提升性能
2010/02/15 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
简单JS代码压缩器
2006/10/12 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
js实现手机发送验证码功能
2017/03/13 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
2018/01/23 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
vue props 单项数据流实例分享
2020/02/16 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
python滑块验证码的破解实现
2019/11/10 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
机电专业毕业生求职信
2013/10/27 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
售后服务承诺书
2014/03/26 职场文书
淘宝客服工作职责
2014/07/11 职场文书
大学生党性分析材料
2014/12/19 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers