Laravel Api 未从请求 class 发送所需的错误 json 消息

Laravel Api does not send required error json message from Request class

请求Class

class LoginRequest extends FormRequest
{
    public function wantsJson() {
        return true;
    }   

    public function authorize() {
        return true;
    }

    public function rules() {
        $validators = [
            'email'    =>  'required',
            'password' =>  'required'
        ];
        return $validators;
    }

    public function failedValidation(\Illuminate\Contracts\Validation\Validator $validator) {
        if($validator->fails()) {
            //print_r($validator->errors());
            //die();

        }
        return parent::failedValidation($validator);
    }
}

我有一个用Laravel写的api。我正在尝试通过 Postman 扩展来测试验证。当我提交一些电子邮件和密码值时,它起作用了。我收到有关凭据是否存在的消息。

如果我不提交值,则不会返回 json 消息包。

我可以确认 MessageBag 中有验证错误消息。这是屏幕截图。如果截图不清楚请点开查看

还有一个比较奇怪的就是返回的状态码是200

如果您需要更多信息,请告诉我

在我的情况下,我这样设置 Laravel API。

在我的 App\Exceptions\Handler

public function render($request, Exception $exception)
    {
        // return parent::render($request, $exception);

        $rendered = parent::render($request, $exception);

        if ($exception instanceof ValidationException) {
            $json = [
                'error' => $exception->validator->errors(),
                'status_code' => $rendered->getStatusCode()
            ];
        } elseif ($exception instanceof AuthorizationException) {
            $json = [
                'error' => 'You are not allowed to do this action.',
                'status_code' => 403
            ];
        }
        else {
            // Default to vague error to avoid revealing sensitive information
            $json = [
                'error' => (app()->environment() !== 'production')
                    ? $exception->getMessage()
                    : 'An error has occurred.',
                'status_code' => $exception->getCode()
            ];
        }

        return response()->json($json, $rendered->getStatusCode());
    }

也将其导入顶部

use Illuminate\Validation\ValidationException;
use Illuminate\Auth\Access\AuthorizationException;

它有助于将错误格式化为 JSON 格式。

我的LoginRequest看起来像这样(简单)

class LoginRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'email' => 'required|email',
            'password' => 'required'
        ];
    }
}