我使用名为project和device的两个资源创建了一个安静的Web服务。它旨在使用“/ project / {projectId} / device / {deviceId}”之类的URI来访问项目中的特定设备。但是,如果设备不属于项目,则没有意义。如果projectId和deviceId不匹配,系统应返回什么状态代码?
HTTP 400错误请求:不太可能,因为请求的语法是正确的。
HTTP 403 Forbidden:很可能,但我想在项目或设备被禁用时返回403.
找不到HTTP 404:projectId和deviceId都存在。它们不匹配。
答案 0 :(得分:5)
404 Not Found
这表示网址整体与任何资源都不对应。
服务器未找到与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”语义有点模糊。