咔叽网单游戏基地

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 25|回复: 0

[PHP编程] Laravel 修改验证异常的响应格式实例代码详解

[复制链接]
  • TA的每日心情
    无聊
    2019-6-2 14:11
  • 签到天数: 4 天

    [LV.2]圆转纯熟

    1万

    主题

    1万

    帖子

    7万

    积分

    帖子管理员

    Rank: 9Rank: 9Rank: 9

    积分
    70408
    发表于 2020-7-6 22:14:59 | 显示全部楼层 |阅读模式
    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异常响应格式内容请搜索咔叽论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持咔叽论坛!

    原文地址:https://www.jb51.net/article/187297.htm
    回复

    使用道具 举报

    QQ|手机版|小黑屋|咔叽网单

    GMT+8, 2020-8-14 01:20

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表