【问题标题】:HTTP 404 vs 400 for invalid query parameters无效查询参数的 HTTP 404 与 400
【发布时间】:2018-08-03 16:17:28
【问题描述】:

这是我的请求网址:

http://server.com/app/user/getuser/?userId=9999

注意userId 是查询参数。未嵌入路径参数。

我了解如果请求的 URL 是:http://server.com/app/user/getuser/9999 并且数据库中不存在 ID 9999,则应使用代码 404。

但是对于 userId 是查询参数的情况应该使用什么 HTTP 状态?现在我返回 400 而不是 404。

【问题讨论】:

    标签: http-status-code-404 query-parameters http-status-code-400 http-status


    【解决方案1】:

    我会使用 404 Not Found

    为什么?

    RFC 7231 定义了一个 400 Bad Request 响应,如下所示:

    400 (Bad Request) 状态码表示服务器不能或不会处理请求,因为某些东西被认为是客户端错误(例如,格式错误的请求语法、无效的请求消息帧或欺骗性请求路由) .

    ...由于您的请求有效并且您只是尝试访问不存在的资源,我认为 404 Not Found 状态更合适。 RFC 7231 定义它的含义是这样的:

    404(未找到)状态代码表示源服务器没有找到目标资源的当前表示或不愿意透露存在的表示。

    【讨论】:

    • 这对我有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 2020-11-22
    • 1970-01-01
    • 2015-10-15
    • 2019-05-31
    • 1970-01-01
    相关资源
    最近更新 更多