2012-04-27 6 views
5

Sto provando a rendere un'API leggermente basata sui risultati dell'API di StackExchange.Se questo risultato Json restituisce un 404 o 200?

Quindi ecco la mia uscita JSON.

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

maledettamente semplice.

Ora, non sono sicuro di cosa fare se la persona prova a richiedere un .. um .. prodotto o domanda o qualsiasi altra cosa e l'elemento non esiste.

ad es ..

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

pensavo sarei tornato un 200 e la JSON sopra, con la proprietà Items essere vuoti.

L'altra idea che avevo era di ritorno che JSON con la proprietà elementi vuoto ma l'impostazione dello stato http risposta a 404.

Pensieri/standard?

Voglio davvero restituire l'errore, non importa quale. Perché? il contingente. Anche un risultato vuoto è ancora un vero successo per il servizio API.

+2

A mio parere, userei un 404, perché quello è il codice standard non trovato. – hawkfalcon

risposta

3

A mio parere vorrei restituire uno stato 400 & 204:.

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

400 Bad Request

La richiesta non può essere soddisfatta a causa di sintassi male [2]

Se si passa un argomento non valido, viene restituito uno stato 400 che indica che la richiesta è errata.

In questo scenario, non restituirei alcun messaggio JSON. Non è valido, risolvilo. StatusMessage può pronunciare "Argomento non valido", ma nessun contenuto.


204 No Content

Il server ha elaborato la richiesta, ma non restituisce alcun contenuto. [2]

Se si passano argomenti validi, ma il contenuto non è stato trovato, è possibile affermare che non è stato trovato.

È possibile * voler passare alcune informazioni aggiuntive, non è possibile.

Per Twitter, si supponga di voler cercare l'utente '@JohnDoe' e non è stato trovato. Potresti dire 204, con: "Scusa se non siamo riusciti a trovare @JohnDoe, ma abbiamo trovato queste 3 persone simili che potrebbero essere ciò che vuoi", nel qual caso non spingerai giù i loro dettagli, solo i nomi di Twitter.

Tuttavia, se si cercava un tweet e non è stato trovato, non c'è motivo di inviare ulteriori informazioni al client. Dì solo che non è stato trovato, fine della storia.

+0

Love it! Non ho mai pensato a 204 :) E sì, 400 ho usato per i dati di richiesta cattivi passati. –