2012-04-27 13 views
5

Próbuję utworzyć interfejs API sorta luźno oparty na wynikach apletu StackExchange.Czy ten wynik Json powinien zwrócić 404 lub 200?

Oto moje wyniki json.

{ 
    "items" : [ ... objects in here .... ] 
    "page" : 
    "page_size" : 
    "total_pages" : 
    "total_items_count" : 
    "maximum_quota" : 
    "remaining_quota" : 
} 

całkiem cholernie prosta.

Nie jestem pewien, co zrobić, jeśli dana osoba próbuje poprosić o ... um .. produkt lub pytanie, lub coś takiego, a przedmiot nie istnieje.

np ..

{ 
    "items": [] 
    ... snipped .... 
} 

myślałem Chciałbym zwrócić 200 i JSON powyżej, przy czym nieruchomość przedmioty są puste.

Inny pomysł miałem wracał że json z właściwością Pozycje pusty, ale ustawienie stanu HTTP odpowiedzi do 404.

Thoughts/norm?

Naprawdę chcę zwrócić jsona bez względu na wszystko. Czemu? kwota. Nawet pusty wynik jest wciąż trafnym trafieniem w usługę APi.

+2

Moim zdaniem użyłbym 404, ponieważ jest to standardowy kod nie znaleziony. – hawkfalcon

Odpowiedz

3

Moim zdaniem Chciałbym zwrócić 400 & 204 statusu.

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

400 Bad Request

Żądanie nie mogą być spełnione z powodu złej składni [2]

Po przekazaniu niepoprawnego argumentu zwracany jest status 400, który jest nieprawidłowy.

W tym scenariuszu nie zwrócę żadnej wiadomości JSON z powrotem. Jest nieważny, uporządkuj to. StatusMessage może powiedzieć "Invalid Argument", ale bez treści.


204 nr Zawartość

Serwer powodzeniem przetwarzać żądanie, ale nie zwraca żadnej zawartości [2].

Jeśli przekażesz prawidłowe argumenty, ale treści nie znaleziono, możesz powiedzieć, że nie znaleziono.

Możesz * chcieć przekazać dodatkowe informacje, nie możesz.

Na Twitterze powiedzmy, że chcesz wyszukać użytkownika "@ JohnDoe", ale nie został znaleziony. Mógłbyś powiedzieć 204, z: "Niestety nie mogliśmy znaleźć @ JohnDoe, ale znaleźliśmy 3 podobne osoby, które mogą być tym, czego chcesz". W takim przypadku nie przesyłasz ich szczegółów, tylko nazwy na Twitterze.

Jeśli jednak szukałeś tweeta i nie został znaleziony, nie ma powodu, aby wysyłać do klienta dodatkowe informacje. Po prostu powiedz, że nie znaleziono, koniec historii.

+0

Uwielbiam to! Nigdy nie myślałem o 204 :) I tak, 400-tych używam do podania złych danych żądania. –

Powiązane problemy