2017-09-02 210 views
1

我已經瀏覽了HTTP/1.1協議規範RFC-2616,我想了解在調用特定REST方法時應該返回哪個狀態碼。據我所研究的協議(鏈接),我試圖解析REST方法,以正確的狀態代碼:REST:根據RFC 2616 HTTP/1.1規範的正確響應狀態?

  • GET
    • 到的情況下,返回200 (ok)至少一個資源被發現。
    • 我應該返回204(找不到)如果找不到任何東西(即返回空列表)?
  • PUT
  • POST
    • 與如果新reource已被添加到基於共同recommendation的生產地
    • 返回201 (created)的差相同的像PUT方法,POST前人的精力用於創建一個新的資源,PUT修改現有的。如果我決定遵循這一建議,那麼在嘗試修改現有資源前,我應該返回什麼? POST api/v1/person/1
  • PATCH
    • 與差異同樣喜歡PUT方法就像放的做法,但itmodifies資源不更換整個資源部分
    • 沒有關於在W3 PATCH REST方法字協議RFC-2616,應該像PUT一樣對待它嗎?
  • DELETE
    • 返回200 (ok)如果資源被刪除,[204(未找到)]的情況下,沒有現有的除去資源(ID未找到)。在REST實施的情況下是否複製GET響應principe?

是我的「表」正確的(特別是帶引號?報表?是正確的,只有GET應返回在體內的請求本身和方法的其餘部分只是一個URI鏈接到經修正包含在標題中的資源(新增,修改..)

我的理解是否正確,確實存在另一個描述REST方法的官方正式推薦(或者我們「有義務」)遵循的源碼嗎?我很困惑廣泛的來源給了我對這種真正冗長的RFC-2616協議的每種方法有一些不同的答案。

最好的辦法是存在一個表格,簡要清楚地描述所有這5種可能的返回狀態,正文內容和標題的方法。

+0

嘗試將狀態碼與方法對齊可能不是一個有用的想法。 – VoiceOfUnreason

+0

https://www.iana.org/assignments/http-methods/http-methods.xhtml包含方法定義的鏈接。 –

回答

4

RFC 7230

這HTTP/1.1規範淘汰了RFC 2616

因此,任何試圖制定出模式的狀態碼應該從那裏

開始是我的「表「正確

不是真的;看看Kropat的(非官方)流程圖Stop Making it Hard

+0

也許值得注意的是:鑑於當前的HTTP/1.1規範被模塊化爲多個部分,RFC 7231「語義和內容」https://tools.ietf.org/html/rfc7231也廢棄了RFC 2616,並且是特定的部分,其中現在定義了狀態代碼的語義 – sideshowbarker