“格式错误的标识符”最合适的HTTP状态代码

时间:2014-08-25 08:43:25

标签: web-services rest http http-status-codes

鉴于我们有一个带有数字标识符的Web服务。对于无效(非数字)标识符,HTTP状态代码通常最常见的是什么?

有效资源标识符

  

请求:获取http://service.co.uk/resources/123

     

回复:200 OK

有效但未知的资源标识符

  

请求:获取http://service.co.uk/resources/456

     

回复:404 Not Found

无效的资源标识符

  

请求:获取http://service.co.uk/resources/abc

     

响应:400错误请求

如果标识符无效,404(未找到)准确描述了这种情况;我们找不到资源。然而,400(错误请求)给出了为什么没有找到资源的指示。

RFC 2616

  

10.4.1 400错误请求

     

由于格式错误,服务器无法理解该请求   句法。客户端不应该重复请求   修改

     

10.4.5 404 Not Found

     

服务器未找到与Request-URI匹配的任何内容。没有   指示该条件是暂时的还是   常驻。如果服务器应该使用410(Gone)状态代码   通过一些内部可配置的机制,知道一个旧的   资源永久不可用,没有转发地址。   此状态代码通常在服务器不希望时使用   明确说明请求被拒绝的原因,或者没有其他请求   回应是适用的。

1 个答案:

答案 0 :(得分:0)

该URL在语法上不正确,在语义上不正确。它具有正确的语法/结构,但所选择的特定标识符没有任何意义。这使得400 (Bad Request)成为一个糟糕的候选人。如果它是/123/resources,你可能会认为它在语法上是不正确的,但我敢打赌你的框架会以404回复你未指定的任何路径。即使两者都适用,您也应该更喜欢更具体的404错误。这就是我见过的每个框架所做的事情。

此外,RFC 2616已过期。查看最新版本的7230到7239。