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

接口请求同时存在400与404问题时,应优先返回哪种状态码?

HTTP PUT请求错误优先级问题

示例users表

idname
1John Doe
2Jane Doe

不同请求场景的响应情况

  • 正常更新请求:发送PUT http://{host}:{port}/users/1并提供正确JSON请求体:

    {
        "name": "John Roe"
    }
    

    响应(200):

    {
        "message": "Update Success"
    }
    

    返回成功响应。

  • 资源不存在但请求体合法:发送PUT http://{host}:{port}/users/3且请求体正确,返回404 Not Found。

  • 资源存在但请求体错误:发送PUT http://{host}:{port}/users/2但请求体错误:

    {
        "name": ""
    }
    

    错误响应(400):

    {
        "message": "name is required"
    }
    

    返回400 Bad Request。

问题

如果发送的请求既指向不存在的资源(如PUT http://{host}:{port}/users/3),同时JSON请求体又不正确,此时应返回400还是404?应优先检查哪种情况?

答案

应该优先返回400 Bad Request,原因如下:

  • 请求体的格式或内容错误属于客户端请求本身的基础问题,服务器连有效请求内容都无法验证,没必要继续执行资源存在性检查。
  • 404的适用场景是请求本身合法,但目标资源不存在;而当请求体不合法时,直接终止后续流程返回400更符合HTTP规范的逻辑。
  • 从开发者调试角度,先提示请求体错误,能让用户先修正最基础的请求问题,再排查资源相关的问题,效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:40:36