【问题标题】:HTTP status code for arguments combination is not valid?参数组合的 HTTP 状态代码无效?
【发布时间】:2012-06-25 05:35:13
【问题描述】:

我已经使用名为 project 和 device 的两个资源创建了一个安静的 Web 服务。它旨在使用诸如“/project/{projectId}/device/{deviceId}”之类的 URI 来访问项目中的特定设备。但是,如果设备不属于该项目,则没有任何意义。如果 projectId 和 deviceId 不匹配,系统应该返回什么状态码?

  1. HTTP 400 错误请求:不太可能,因为请求的语法是正确的。

  2. HTTP 403 Forbidden:很可能,但我想在项目或设备被禁用时返回 403。

  3. 找不到 HTTP 404:projectId 和 deviceId 都存在。他们只是不匹配。

【问题讨论】:

    标签: rest http-status-codes


    【解决方案1】:

    404 未找到

    这表明该网址作为一个整体不对应任何资源。

    来自RFC 2616 sec 10.4.5

    服务器没有找到任何匹配 Request-URI 的东西。不 指示该状况是暂时的还是 永久的。

    但是,您始终可以在正文和标题中提供其他信息。例如,您可以在正文中放置相关项目 URI 和相关设备 URI 的链接,并说明设备与项目无关。

    404 Not Found
    
    The project http://example.com/project/1234 does not contain the device
    http://example.com/device/4321
    

    “400 Bad Request”状态应该只用于有语法错误的请求。来自RFC 2616 sec 10.4.1

    由于格式错误,服务器无法理解请求 语法。

    “403 Forbidden”语义有点模糊。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      • 2015-04-15
      • 1970-01-01
      相关资源
      最近更新 更多