資源/用戶/ 12345不存在。假設消費者正在隨機嘗試不同的ID。沒有授權。任何用戶都可以查看任何用戶。從更廣泛的意義上說,我的問題是「如果您對不存在的資源執行GET,應該返回什麼?」在不存在的資源上獲取GET的REST標準
我應該爲不存在的ID返回一個空用戶嗎?還是應該返回帶有正確狀態碼的錯誤消息?
什麼是典型/慣常/推薦的做法?
資源/用戶/ 12345不存在。假設消費者正在隨機嘗試不同的ID。沒有授權。任何用戶都可以查看任何用戶。從更廣泛的意義上說,我的問題是「如果您對不存在的資源執行GET,應該返回什麼?」在不存在的資源上獲取GET的REST標準
我應該爲不存在的ID返回一個空用戶嗎?還是應該返回帶有正確狀態碼的錯誤消息?
什麼是典型/慣常/推薦的做法?
這取決於您的安全問題。我要麼送404,如果它是OK的猜測者發現,如果該用戶ID不存在,或在/用戶
決定是401還是404,並堅持使用所有ID,無論它們是否存在。您不希望黑客通過分析哪些代碼返回了哪個錯誤代碼來找出哪些代碼是值得的。 – 2009-10-07 19:11:05
@Christian Hayter:請參閱@eglasius關於檢查授權的說明,首先要確定401或404是否有序。 – user359996 2011-03-06 04:39:17
返回404狀態碼。
GET應該只檢索存在的東西。
因此,我將返回404
這看起來像一個404錯誤,我 - 未找到資源。
@Byron是對的,返回HTTP 404.你想利用HTTP的所有功能,這些功能包括響應狀態代碼。因此,如果出現客戶端錯誤,請返回4xx錯誤代碼,並且如果您的服務器代碼存在內部問題,則返回5xx錯誤代碼等。
Richardson和Ruby的RESTful Web Services(O'Reilly)對這個以及附錄中包含所有最重要的HTTP錯誤代碼以及何時使用它們。
發送401對未經驗證的訪問都嘗試任何的資源,說,這假設你第一次檢查授權該操作 - > /用戶/ [id],如果用戶不允許訪問其他用戶帳戶,你會返回。
決不依賴於用戶不知道用戶ID ...
如果用戶認證和授權,返回404。如果用戶未認證和授權,把他們送到獲得授權的頁面。
從你原來的問題,沒有授權,這顯然是一個404。如果你要添加授權,那麼它實際上是可以接受的返回404爲所有未經授權的請求;這防止隨機ID猜測通過區分401或403(存在,但未經授權)404s(不存在),如其他一些答案所暗示的。每RFC:
10.4.5 404沒有找到,這個狀態碼是常用的當服務器 不希望透露究竟爲什麼 請求已被拒絕,或者當 沒有其他響應適用。
我的看法:返回一個空200
坦率地說,如果一個REST資源不存在,它不存在。這意味着返回404.然而,在你的情況下,12345是你用來識別/查找返回實體的參數。Resource/user/{userId}實際上確實存在,所以從技術上講,我不認爲返回404是合適的,儘管很明顯可以看到任何一方的論點。
但是,如果您想要返回兩個狀態碼以某種方式公開您的系統,我會說堅持一個空的200 OK。
REST不是標準化的。 HTTP(REST依賴於)是標準化的。你的意思是「典型」還是「通常」或「推薦」? – 2009-10-07 19:13:35
我可以說我想知道所有的論點嗎? – Langali 2009-10-07 19:17:03
@Erlanged:請用更多信息更新您的問題。沒有「標準」,所以這將有助於澄清你的問題。請不要添加評論。請*更新*問題和標題以反映你想知道的內容。 – 2009-10-07 19:25:13