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

KiK*_*iKi 1 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都存在.他们只是不匹配.

Die*_*Epp 5

404未找到

这表明URL 作为一个整体与任何资源都不对应.

来自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
Run Code Online (Sandbox Code Playgroud)

"400 Bad Request"状态仅应用于具有语法错误的请求.来自RFC 2616 sec 10.4.1

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

"403 Forbidden"语义有点模糊.