2012-11-19 18 views
6

Mam spokojny serwis, w którym jedna z kolekcji jest ograniczona (ze względów UX). W tym przypadku ma limit 25 elementów. Jeśli to zostanie przekroczone, zasoby muszą zostać usunięte, zanim będzie można dodać więcej. Jako przykład, jeśli klient twierdzi:Kod stanu HTTP dla ograniczonej kolekcji?

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

i istnieje < 25 rzeczy rzeczy:

200 OK 

jeżeli> 25 rzeczy rzeczy:

??? 

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

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

200 OK 

Jaki jest najlepszy kod dla tego? Straight 400? 409 KONFLIKT? 429? Żaden wydają rację ..

+2

409 Konflikt wydaje mi się właściwy, ponieważ (a) jest to problem z zasobem i (b) można go rozwiązać przez użytkownika. – Alohci

Odpowiedz

8

Korzystając 409. Od httpbis section 7.5.8.

„Żądanie nie mogło być zakończone z powodu konfliktu z obecnym stanu zasobu Ten kod jest dozwolone tylko w sytuacjach, w których oczekuje się, że użytkownik będzie w stanie rozwiązać konflikt, a następnie ponownie wysłać żądanie. "Ładunek POWINNY zawierać wystarczającą ilość informacji, aby użytkownik mógł rozpoznać źródło konfliktu."

W twoim przypadku, zasób jest jeden zidentyfikowany przez http://somesite.com/api/v2/stuff, a wniosek POST nie może zostać zrealizowane z powodu konfliktu z jego obecnym stanie (co jest to, że już maxed). W swojej odpowiedzi udziel użytkownikowi wystarczających informacji (najlepiej linków), aby usunąć jednego z istniejących członków, zwiększyć limit lub podjąć inne działanie. Następnie mogą ponownie przesłać pierwotną prośbę.

+0

Tak, opis pasuje i myślałem, że może być najlepiej. Konflikt brzmiał trochę zbyt ... crude = | – Scott

Powiązane problemy