0

背景:假設我有一個顯示Foos集合信息的網站。網址是:如果使用錯誤的方法並且我不知道資源是否存在,我應該使用404還是405進行響應?

https://example.com/foo/{foo-id} 

我只對GET請求做出響應 - 您不能POST或PUT或DELETE Foo。檢查某個ID是否對應真實的Foo是一項昂貴的操作,我想避免。

問題:如何響應POST請求到/foo/12345?理想的做法是檢查這樣的Foo是否存在。如果是這樣,發送405(方法不允許)。如果沒有,發送404(未找到)。但是檢查Foo是否存在價格昂貴,而且我不想浪費那些甚至無法使用正確方法的白癡。

那麼,我有兩種選擇:

  • 始終以404響應,即使有可能實際上是東西在那裏。
  • 始終以405響應,即使可能沒有任何內容,並且如果使用正確的方法重新發送請求,用戶代理將迎接404。

哪個選項最符合HTTP標準?他們中的任何一個人是否都支持這個標準?

回答

1

據我所知,關於HTTP規範本身並沒有嚴格的規定。

但是我對這個個人的看法是,在決定什麼樣的反應給予的請求,檢查請求類型的步驟應檢查請求路徑來之前(查看是否它甚至有) 。

考慮到在某些情況下,即使配置您的網絡服務器(或負載平衡器),以阻止所有錯誤類型的請求方法,在請求甚至到達您的網絡軟件之前,也是合理的方法。這再次暗示我應該在路徑之前檢查請求方法。

然後添加到事實上,你說如果檢查一個Foo甚至存在是一個昂貴的操作,似乎謹慎的確認,他們已經小心地發送正確的請求在第一位!

所以是的,我總是會在這種情況下返回405。

相關問題