【问题标题】:Change laravel errors messages to JSON for API将 laravel 错误消息更改为 API 的 JSON
【发布时间】:2018-06-01 18:53:23
【问题描述】:

有没有办法将 laravel 默认错误消息操作或更改为 JSON 响应。我正在构建一个 API。我得到的当前响应是

{
    "email": [
        "The email has already been taken."
    ],
    "phone": [
        "The phone has already been taken."
    ]
}

我希望它是这样的

{
  "errors": [
    {
      "field": "username",
      "message": "The username field is required."
    },
    {
      "field": "password",
      "message": "The password field is required."
    }
  ]
}




$validator = Validator::make($request->all(), [
            'email' => 'required|string|email|max:50|unique:customers',
            'phone' => 'required|string|max:10|min:10|unique:customers',
            'password' => 'required|string|min:6',
        ]);



        if ($validator->fails()) {
           return response()->json($validator->messages(), 200);
        }

【问题讨论】:

  • 两个代码都是 JSON。
  • 我认为他想将错误数组放入错误键中。
  • @Phiter 是的...任何解决方案??
  • 如何返回这些错误?
  • @Phiter laravel 会自动执行此操作。我什至无法访问正在返回的数组/json。

标签: php json laravel api


【解决方案1】:

从 messageBag 中提取错误并根据需要格式化它们:

$errors = [];
foreach($validator->getMessageBag()->toArray() as $key=>$messages) {
    $errors[$key] = $messages[0];
}
return response()->json($errors, 200);

【讨论】:

    【解决方案2】:

    如果你得到第一个例子的对象,你可以像这样通过for..in循环改变它

    var response = {
        "email": [
            "The email has already been taken."
        ],
        "phone": [
            "The phone has already been taken."
        ]
    };
    
    var allError = [];
    for(let i in response){
       allError.push({
          field: i,
          message: response[i][0]
        });
    }
    var errors = {errors:allError};
    console.log(errors);

    您不应该从 php/laravel 更改,因为那样您将无法为单个输入显示多个错误。

    也永远不要更改也适用于网络的基本代码。你不能只考虑API,它也可以用于Web。

    【讨论】:

    • 永远不要在本地修复可以在服务器中避免的东西。
    • @Amarnasan :也永远不要更改也适用于网络的基本代码。你不能只考虑API,它也可以用于Web。
    • @Amarnasan 你我都不完全了解业务逻辑,所以我建议不要更改 laravel 的基本代码。
    猜你喜欢
    • 2017-01-11
    • 2018-02-18
    • 1970-01-01
    • 2021-04-25
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    相关资源
    最近更新 更多