如何使用Laravel验证器校验API请求参数?

2026-05-06 15:271阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计878个文字,预计阅读时间需要4分钟。

如何使用Laravel验证器校验API请求参数?

很多人把验证逻辑写进+FormRequest+,但改着改着把+rules()+写成了+return [];+,或者条件不匹配导致返回空数组,结果请求请求完成不校验就进去了控制器——导致+422+。都不会触发异常。

  • 务必确保 rules() 至少返回一个非空数组,哪怕只是 ['id' => 'required|integer']
  • 如果想动态开关校验,用 withValidator() 做拦截,而不是清空 rules()
  • 测试时手动发个缺失必填字段的请求,看是否真返回 422 和错误信息,别只看代码有没有写 validate

Laravel 10+ 的 validated()safe()->all() 行为不同

validated() 返回的是经过规则过滤后的数据(比如你写了 'email' => 'required|email',它只返回 email 字段),而 safe()->all() 是把所有通过校验的字段全吐出来,包括没在 rules() 里声明的字段(只要没被 only() 限制)。

阅读全文
标签:Laravel

本文共计878个文字,预计阅读时间需要4分钟。

如何使用Laravel验证器校验API请求参数?

很多人把验证逻辑写进+FormRequest+,但改着改着把+rules()+写成了+return [];+,或者条件不匹配导致返回空数组,结果请求请求完成不校验就进去了控制器——导致+422+。都不会触发异常。

  • 务必确保 rules() 至少返回一个非空数组,哪怕只是 ['id' => 'required|integer']
  • 如果想动态开关校验,用 withValidator() 做拦截,而不是清空 rules()
  • 测试时手动发个缺失必填字段的请求,看是否真返回 422 和错误信息,别只看代码有没有写 validate

Laravel 10+ 的 validated()safe()->all() 行为不同

validated() 返回的是经过规则过滤后的数据(比如你写了 'email' => 'required|email',它只返回 email 字段),而 safe()->all() 是把所有通过校验的字段全吐出来,包括没在 rules() 里声明的字段(只要没被 only() 限制)。

阅读全文
标签:Laravel