2013-01-11 76 views
2

我正在使用Ruby on Rails,並試圖理解HTTP代碼的所有細節,以使我的應用程序符合標準,並且我正面臨以下情況。刪除記錄時的HTTP代碼

比方說,我有一個數據庫與兩個表,公司和僱員。

  • 如果用戶嘗試刪除公司沒有員工,就被刪除,服務器發送代碼200
  • 如果用戶嘗試刪除與員工的公司,它是不會被刪除,服務器發送消息(」有員工與這家公司有聯繫......「)。在這種情況下,服務器必須發送什麼代碼?我在考慮HTTP 4XX,但在我看來,這不是客戶端錯誤。
+0

如果他們試圖刪除他們不被允許的資源,我會說這是一個客戶端錯誤。通過列出允許:響應頭中的所有允許方法,確保客戶端具有該信息。 –

回答

3

使用409衝突錯誤代碼。它表明由於請求中的衝突,請求無法處理。

一旦員工離開,衝突將被刪除,刪除將起作用。您可以將其視爲客戶端錯誤,因爲它是來自客戶端的衝突請求。

+0

確實。包含一個鏈接標題字段也很有用,該字段指示請求與哪個資源發生衝突。 –

+0

感謝您的支持。 – Syph3R

-1

如果客戶端不允許在員工公司使用DELETE方法,我會建議405方法不允許。在響應主體中包含解釋原因。

+0

這不是405的用途。 –

+0

請參考?我會爭辯說,如果資源在Allow頭中沒有DELETE而返回,那麼它不僅適當,而且是最優的。 –

+0

允許/ 405用於指示資源支持的操作,而不是在給定服務器的當前狀態的情況下是否實際執行操作。 請參閱http://trac.tools.ietf.org/wg/httpbis/trac/changeset/2086(是的,該票已經開放多年,但羅伊終於解決了它)。 –