2012-11-19 31 views
6

我有一個寧靜的服務,其中一個集合是有限的(UX的原因)。在這種情況下,它有25個項目的上限。如果超過這個數量,必須先刪除資源,然後才能添加更多資源。舉個例子,如果一個客戶端提交:有限集合的HTTP狀態碼?

POST http://somesite.com/api/v2/stuff 
{"cool":"stuff"} 

,並有< 25東西的東西:

200 OK 

如果> 25米的東西的東西:

??? 

DELETE http://somesite.com/api/v2/stuff/:id 

POST http://somesite.com/api/v2/stuff 
{"cool":"stuff"} 

200 OK 

什麼是最好的代碼爲了這?直400? 409衝突? 429?似乎都不完全正確..

+2

409衝突似乎對我來說是正確的,因爲(a)它是資源狀態問題,(b)它是用戶可解析的。 – Alohci

回答

8

使用409從httpbis section 7.5.8

「的請求無法完成,因爲與資源的當前狀態 衝突這段代碼只允許在情況下 預期用戶可能能夠解決衝突並且 重新提交請求。淨荷應該包括足夠的信息 供用戶識別衝突的來源。

在你的情況下,資源是一個由http://somesite.com/api/v2/stuff識別,並且POST請求無法完成,原因與它的當前狀態的衝突(這是它已經刷爆了)。在你的迴應中,給用戶足夠的信息(最好是鏈接)刪除現有成員之一,超出限制或採取其他行動。然後他們可以重新提交原始請求。

+0

是的說明適合,我認爲這可能是最好的。衝突聽起來有點太.. crude = | – Scott