Laravel 7 : 将失败的验证响应设为 200 而不是 422

Laravel 7 : Make failed validation response 200 instead of 422

我正在创建一个 Laravel 7 应用程序。

我创建了一个 POST API 接受 2 个参数并添加验证。当验证器失败时,它会给出响应“422 unprocessable entity”并给出 JSON 格式的错误,如下所示:

{
    "message": "The given data was invalid.",
    "errors": {
        "mobile_no": [
            "The mobile no must be 10 digits."
        ]
    }
}

现在我想要错误代码为 200 而不是 422 的相同响应。

我该如何实现?

您可以为此使用错误处理程序。 https://laravel.com/docs/7.x/errors#render-method

 public function render($request, Exception $exception)
 {
     if ($condition)) {
       return response()->json($content, 200);
     }

    return parent::render($request, $exception);
}

检查你需要的内部函数异常,并用成功的响应替换它

对于laravel 8,我覆盖了app/Exceptions/Handler中的方法invalidJson。php

protected function invalidJson($request, ValidationException $exception)
{
    return response()->json([
        'message' => $exception->getMessage(),
        'errors' => $exception->errors(),
    ], 200); //parent method return 422
}