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

API返回400/422错误时携带合法值列表是否是良好开发实践?

API错误返回实践解答

状态码选择

这种请求语法合法、仅业务语义不符合规则的场景,优先使用422 Unprocessable Entity而非400 Bad Request:

  • 400 Bad Request一般用于请求格式错误场景,比如JSON语法非法、缺少必填的请求头/参数
  • 422 Unprocessable Entity专门对应服务器可正常解析请求格式,但内容不符合业务约束的情况,和你的场景完全匹配

错误信息携带规则

返回状态码的同时携带具体错误说明、包括合法值列表,是非常推荐的良好实践,理由如下:

  • 仅返回状态码的情况下,调用方无法定位具体错误原因,尤其是枚举值类的约束,不同开发/团队的认知可能存在偏差,没有明确提示的话需要额外查阅文档、甚至对接接口提供方,会大幅提升沟通和排查成本
  • 枚举值数量较少的场景(比如你举例的只有2个合法值),直接把全部合法值附在错误提示里,调用方可以直接修正问题,不需要额外查资料
  • 如果枚举值数量极多(超过20个),可以不用列全合法值,换成提示对应字段的枚举定义规则即可

推荐的响应结构

优先返回结构化的错误响应,方便人工排查也兼容程序自动处理,示例如下:

{
  "error_code": "INVALID_PARAM_VALUE",
  "message": "animal字段值非法",
  "invalid_field": "animal",
  "allowed_values": ["DOG", "CAT"]
}

如果不需要太复杂的结构,纯文本提示animal字段值非法,合法值为:"DOG"、"CAT"也完全可以。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:30:01