鉴于我们有一个带有数字标识符的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)状态代码 通过一些内部可配置的机制,知道一个旧的 资源永久不可用,没有转发地址。 此状态代码通常在服务器不希望时使用 明确说明请求被拒绝的原因,或者没有其他请求 回应是适用的。
答案 0 :(得分:0)
该URL在语法上不正确,在语义上不正确。它具有正确的语法/结构,但所选择的特定标识符没有任何意义。这使得400 (Bad Request)
成为一个糟糕的候选人。如果它是/123/resources
,你可能会认为它在语法上是不正确的,但我敢打赌你的框架会以404
回复你未指定的任何路径。即使两者都适用,您也应该更喜欢更具体的404
错误。这就是我见过的每个框架所做的事情。
此外,RFC 2616
已过期。查看最新版本的7230到7239。