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

REST API返回自定义错误信息时,用400而非200响应码是否正确?

RESTful API自定义错误信息的响应码选择

首先明确:绝对不要用200状态码返回错误信息。200的核心语义是「请求已成功处理」,哪怕你在响应体里写了错误内容,客户端(比如前端框架、API网关)会默认把200判定为成功请求,很可能跳过错误处理逻辑,导致问题。

关于正确的响应码,要结合具体场景判断:

  • 如果是查询特定用户资源(比如调用GET /users/{username}查找某个用户)时发现用户名不存在,标准做法是返回404 Not Found,这完全贴合HTTP语义——请求的目标资源不存在。
  • 如果是登录/身份验证场景(比如调用POST /login提交的用户名不存在),这里有两种常见的合理选择:
    • 用401 Unauthorized:把「用户名不存在」归为身份验证失败的一种,和「密码错误」等统一用401,语义上更贴合身份验证场景。
    • 用400 Bad Request:如果团队约定把所有客户端触发的业务逻辑错误(非资源不存在类)都归到400,这也完全可行,只要团队内部统一规则即可。

你同事主张的400是可以用来返回自定义错误信息的,只要响应体里明确给出错误详情即可,比如返回JSON格式的错误内容:

{
  "error_code": "USER_NOT_FOUND",
  "error_message": "用户名不存在"
}

最后提醒:状态码的使用核心是语义清晰+团队一致,尽量贴合HTTP标准语义能减少沟通成本,但如果团队有统一的约定,优先遵循约定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:20:25