You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何返回带HTTP状态码的JSON而非重定向?

Laravel Form Request验证失败返回JSON响应的方法

要让Form Request验证失败时返回带状态码的JSON而非重定向,直接在自定义的请求类中重写failedValidation方法即可,具体步骤如下:

  • 在你的RegisterRequest类中,引入必要命名空间后,覆盖父类的failedValidation方法:
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;

class RegisterRequest extends FormRequest
{
    // 这里放置你的验证规则(rules方法)和授权逻辑(authorize方法)

    protected function failedValidation(Validator $validator)
    {
        throw new HttpResponseException(
            response()->json(
                [
                    'message' => '验证未通过',
                    'errors' => $validator->errors()->toArray()
                ],
                422 // HTTP 422 是验证失败的标准状态码
            )
        );
    }
}

补充说明

Laravel默认会根据请求类型自动判断响应格式:如果请求头包含Accept: application/json,或者是AJAX请求,验证失败时会自动返回JSON。但如果是普通表单提交要强制返回JSON,上面的方法可以确保无论请求类型如何,都返回JSON响应。

内容的提问来源于stack exchange,提问作者Faruh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:05:21