2013-12-21 28 views
1

在研究最近的REST API时,我有一个问题,为什么“IANA”决定只有100而不是从1开始的HTTP状态代码。我希望会有一个原因,但我会我很想知道这件事。为什么HTTP错误代码从100开始

+1

我怀疑你可以从社区获得这样的问题的权威答案;更好的办法是直接询问标准作者。我们所能做的就是猜测使用第一次找到的咖啡渣。但就我个人而言,它与制定人性化协议的主要方法相关。对于HTTP,这包括具有自由格式的松散语法(除了一些简单的规则),任意空格,区分大小写的匹配等等。有了这个主要原理,要求写入001而不是1是不正确的。OTOH可变长度值看起来更糟糕。但味道是不同的和不可预测的。 – Netch

+2

IANA仅维护注册表。范围由IETF规范定义。 –

+0

@Netch下面的状态码分类对于有三位数的状态码是有意义的。 –

回答

2

HTTP/1.0向HTTP/0.9(最初发布的版本)添加了状态码。状态代码范围被定义为这样:

RFC 1954, 6.1.1 Status Code and Reason Phrase

状态码元素是 尝试以了解和满足所述请求的3位整数结果代码[...]。 状态代码旨在供自动机[...]使用。

状态码的第一个数字定义响应的类别。最后两位数字没有任何分类角色。有第一个数字的5个值:

  • 的1xx:信息 - 未使用,但留作将来使用

  • 的2xx:成功 - 被成功接收的动作,理解和接受。

  • 的3xx:重定向 - 而且必须采取行动,以完成请求

  • 的4xx:客户端出错 - 请求有语法错误或无法实现

  • 的5xx:服务器错误 - 服务器无法完成显然有效的请求

至于“为什么”:它允许五类,每一个都可以包含一百个不同的代码(x00 - x99),“对任何人都应该是足够的”。

+0

感谢@CodeCaster是上面的细节是有道理的。因此,我们在每个类别中确实有100个不同的代码,目前有五个类别来描述状态。尽管目前看起来100个状态已经足够,但希望我们不会耗尽任何类别的状态代码。 :d –

2

状态代码不会以连续的方式编号。第一个数字表示状态码的类型,例如, 2xx表示成功,4xx表示客户端错误。最后的数字用于更多地指定状态码。需要两位数字,因为每种类型存在多于9个状态码。