参数组合的HTTP状态代码无效?

时间:2012-06-25 05:35:14

标签: rest http-status-codes

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

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

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

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

1 个答案:

答案 0 :(得分:5)

404 Not Found

这表示网址整体与任何资源都不对应。

来自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”语义有点模糊。