2012-11-19 14 views
6

Ich habe einen erholsamen Service, wo eine der Sammlungen begrenzt ist (aus UX-Gründen). In diesem Fall hat es eine Kappe von 25 Artikeln. Wenn dies überschritten wird, müssen Ressourcen gelöscht werden, bevor weitere hinzugefügt werden können. Als Beispiel, wenn ein Client übermittelt:HTTP-Statuscode für begrenzte Sammlung?

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

und es gibt < 25 Dinge in Sachen:

200 OK 

wenn> 25 Dinge in Sachen:

??? 

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

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

200 OK 

Was ist der beste Code ist dafür? Gerade 400? 409 KONFLIKT? 429? Keine ganz richtig zu sein ..

+2

409 Konflikt scheint mir richtig zu sein, weil (a) es ein Ressourcenstatusproblem ist und (b) es vom Benutzer auflösbar ist. – Alohci

Antwort

8

Verwenden 409. Von httpbis section 7.5.8.

„Der Antrag nicht aufgrund eines Konflikts mit dem aktuellen Status der Ressource abgeschlossen werden konnte Dieser Code wird nur in Situationen erlaubt, wo Es wird erwartet, dass der Benutzer in der Lage sein könnte, den Konflikt zu lösen und die Anfrage erneut zu übermitteln. Die Nutzlast sollte genügend Informationen enthalten für den Benutzer, um die Quelle des Konflikts zu erkennen. "

In Ihrem Fall ist die Ressource, die identifiziert eine von http://somesite.com/api/v2/stuff und die POST Anfrage mit seinem aktuellen Zustand aufgrund eines Konflikts werden kann nicht abgeschlossen (die ist, dass es bereits ausgereizt ist). Geben Sie dem Benutzer in Ihrer Antwort genügend Informationen (vorzugsweise Links), um eines der vorhandenen Mitglieder zu löschen, das Limit zu erhöhen oder eine andere Aktion durchzuführen. Dann können sie die ursprüngliche Anfrage erneut einreichen.

+0

Ja, die Beschreibung passt und ich dachte, es könnte das Beste sein. Der Konflikt hat auch nur ein wenig geklungen ... grob = | – Scott