2011-10-31 103 views
9

要遵循,並通過一個RESTful API停止關注的人,我有RESTful API POST/DELETE應該在正文中返回什麼?

  • POST /人/鮑勃/遵循
  • DELETE /人/鮑勃/遵循

又該這些返回的身體?

  1. 每個人的集合,你按照
  2. 你只是跟着的人/取消關注
  3. 像{狀態: 「OK」}一個狀態
  4. 沒有。

回答

5

這一切都取決於你的應用程序/ API設計和你要定義的合同與客戶端/來電者。但通常,在所有情況下,您應該返回狀態代碼,以使您的客戶瞭解結果。

像:respond(ResponseCode::OK, ...)

POST:包含所有他的追隨者+狀態碼
的對於DELETE我會返回「鮑勃」對象:我只返回的狀態代碼。

+1

Bob的以下所有內容都可能是成千上萬的東西。這並不理想。 –

+1

你說得對,這就是爲什麼我說這取決於應用程序設計。但是,假設你正在使用mvc框架(rails,asp.net mvc ...):當你調用一個PersonController動作時,你的客戶希望接收一個相同類型的對象(Person),或者至少包含那個類型。 – yek

6

如果您使用HTTP服務器狀態對錯誤進行響應,則狀態碼不會說任何內容。如果您在沒有用戶Bob的情況下響應404 Not Found,或者在數據庫損壞時發生500內部服務器錯誤,那麼您將獲得的唯一成功答案即可。用戶不必檢查狀態碼,他們只需檢查HTTP狀態碼。

我建議你返回任何結果,而事實上,這是一個成功的響應(即200 OK或204無內容)表明操作成功。

3

一般來說,對於一個API,我衛道士使用HTTP狀態代碼,而不是總是確定一個代碼定義的狀態。 這意味着您可以按照現有標準獲得答案,任何獲得錯誤代碼的人都將大致瞭解發生了什麼/他們必須做什麼。 查看wiki文章http status codes獲取可用的參考手冊。

此外,與錯誤代碼一起,並且因爲是我們談論的API,它是有用的有關錯誤更具描述性的消息。像錯誤一樣有意義的東西:「Auth令牌失蹤」,或者你可能提出的任何標準。

當談到創建資源,我通常回答回來201(創建)和資源剛剛創建。請記住,你可能希望排除從資源的一些屬性(例如你正在創建一個用戶,你不應該返回敏感信息,如加密密碼)

關於資源的缺失,一般用在回報200(好)或202(接受),沒有額外的信息。

然而,正如@yek提到的,它在很大程度上取決於使用API​​消費者的承諾。最重要的是你正確記錄API並解釋應該是什麼樣的期望。

相關問題