2012-08-15 20 views
13

Sto lavorando su un'applicazione client e server e sono imbattuto in un problema interessante. Stiamo creando un'API riposante e comunichiamo ai clienti con le risposte JSON. Quando si esegue un DELETE, si restituisce un 200 OK con una risposta vuota. I nostri clienti stanno ottenendo il 200 OK, ma fallendo nell'analisi del JSON.JSON valido in risposta

Abbiamo capire bene il parse fallito (non c'è nulla da analizzare), ma abbiamo avuto una domanda più grande. L'invio di una risposta vuota JSON valida, o dovremmo restituire {} o qualcosa del genere? Grazie.

risposta

12

Dal HTTP/1.1 definition relativa al metodo DELETE:

Una risposta efficace deve essere 200 (OK) se la risposta include un un'entità che descrive lo stato, 202 (accettata) se l'azione non è ancora stato emesso, o 204 (Nessun contenuto) se l'azione è stata emanata ma la risposta non include un'entità.

Quindi, se il vostro server è l'eliminazione immediatamente la voce, quindi le risposte suggerite sarebbe:

  • 200 OK - restituire una sorta di codice di stato (come un vero booleano o una stringa che dice "il successo ")
  • 204 No Content - restituire nulla, e hanno il client di guardare fuori per questa risposta e non tentare JSON parsing, pur sapendo la richiesta ha avuto successo
+3

Ri: se una risposta vuota è "JSON valido" - La definizione in [json.org] (http://json.org/) dice che un valore JSON può essere "una stringa tra virgolette doppie, un numero o vero o falso o nullo, o un oggetto o un array ". Quindi, a meno che non ci sia qualche differenza filosofica tra "JSON valido" e "un valore JSON valido", allora direi che una risposta vuota non è JSON valida. – cloudfeet

7

Basta fare un test rapido qui: http://jsonlint.com/ rivela che uno spazio vuoto non è valido JSON, mentre {} è JSON valido.

+0

Sì, ho visto parser JSON del genere e sulla clienti. La domanda che voglio sapere è se una risposta vuota è un JSON valido (nel senso del protocollo HTTP/JSON) o semplicemente non può essere analizzato. –