2012-11-19 16 views
6

Ho un servizio rilassante in cui una delle raccolte è limitata (per motivi di UX). In questo caso ha un limite di 25 articoli. Se questo è superato, le risorse devono essere cancellate prima che possa essere aggiunto altro. Per fare un esempio, se un client invia:Codice di stato HTTP per raccolta limitata?

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

e ci sono < 25 cose roba:

200 OK 

se> 25 cose a roba:

??? 

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

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

200 OK 

Qual è il codice migliore per questo? Dritto 400? 409 CONFLITTO? 429? Nessuno sembra giusto ..

+2

409 Il conflitto mi sembra giusto, perché (a) è un problema di stato delle risorse e (b) è risolvibile dall'utente. – Alohci

risposta

8

Usa 409. Da httpbis section 7.5.8:.

"La richiesta non può essere completata a causa di un conflitto con l'attuale stato della risorsa Questo codice è consentito solo in situazioni in cui si prevede che l'utente possa risolvere il conflitto e inviare nuovamente la richiesta. Il payload DOVREBBE includere informazioni sufficienti per consentire all'utente di riconoscere l'origine del conflitto. "

Nel tuo caso, la risorsa è quello identificato dal http://somesite.com/api/v2/stuff, e la richiesta POST non può essere completata a causa di un conflitto con il suo stato attuale (che è che è già raggiunto il limite massimo). Nella tua risposta, fornisci all'utente informazioni sufficienti (preferibilmente link) per eliminare uno dei membri esistenti, aumentare il limite o intraprendere qualche altra azione. Quindi possono inviare nuovamente la richiesta originale.

+0

Sì, la descrizione si adatta e ho pensato che potrebbe essere la cosa migliore. Il conflitto ha suonato un po 'troppo .. grezzo = | – Scott

Problemi correlati