POST/PUT请求体不允许为空时 API应当返回什么HTTP状态码
POST/PUT请求必填请求体为空时的HTTP状态码选型参考
最通用的选择:400 Bad Request
你的选择是符合行业通用实践的,400 Bad Request是这类场景下绝大多数开发者的首选:
- 该状态码的原生语义就是「客户端请求存在语法错误,服务端无法正常处理」,请求体为空违反接口的明确约定,完全匹配该语义。
- 包括RESTful通用规范、OpenAPI默认约定在内的主流API设计标准,都将「请求参数/结构不符合接口要求」的场景归类到
400错误范畴,调用方的理解成本极低。 - 实际使用时建议在响应体中补充具体的错误信息,比如
{"error_code":"INVALID_REQUEST","message":"当前接口请求体不允许为空,请按规范传入必填参数"},方便调用方快速定位问题。
小众可选方案(仅特殊场景推荐)
也有部分开发者会选用其他状态码,但仅适合特定的业务体系:
422 Unprocessable Entity:该状态码来自WebDAV扩展规范,语义为「服务端可以识别请求的语法,但是请求内容不符合业务规则」,如果你的API属于WebDAV体系,可以考虑使用,普通业务场景不推荐,会增加对接方的理解成本。- 除此之外还有少部分团队会用
400之外的自定义状态码,但这类方案都需要你在接口文档中做明确说明,否则很容易引发对接纠纷。
核心原则:如果你的团队内部已经有统一的错误码规范,优先遵循内部约定即可,团队内的统一规范比对齐通用实践优先级更高。
内容的提问来源于stack exchange,提问作者gmourier
相关产品推荐
相关产品推荐

