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

Laravel验证不通过时如何返回JSON格式的响应

Laravel 验证图片失败返回 JSON 响应的实现方案

方法1:手动创建验证器(灵活度最高,无需修改全局配置)

不使用$request->validate()快捷验证方法,手动构造验证实例,校验失败后直接返回自定义结构的JSON响应:

use Illuminate\Support\Facades\Validator;

// 定义验证规则
$validator = Validator::make($request->all(), [
    'file' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);

// 校验失败直接返回JSON
if ($validator->fails()) {
    return response()->json([
        'code' => 400,
        'message' => '文件校验不通过',
        'error_list' => $validator->errors()
    ], 400);
}

// 验证通过后执行后续业务逻辑

方法2:重写表单请求类的校验失败方法(适用于单独封装验证规则的场景)

如果你把验证逻辑抽离到了单独的FormRequest表单请求类中,可以重写failedValidation方法实现统一JSON返回:

use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;

// 在你的自定义表单请求类中添加以下方法
protected function failedValidation(Validator $validator)
{
    throw new HttpResponseException(
        response()->json([
            'code' => 400,
            'message' => '参数校验失败',
            'error_list' => $validator->errors()
        ], 400)
    );
}

补充说明

  • 默认场景下,如果请求头携带Accept: application/json,Laravel原生的$request->validate()方法校验失败时会自动返回JSON格式的错误响应,无需额外编写代码。
  • 你现有规则里的max:2048单位为KB,对应2MB的文件大小限制,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:06:01