2013-12-21 29 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個狀態碼。