2010-07-20 2 views
50

Sto scrivendo un servizio Web che accetta solo JSON e che emette anche solo JSON.Codici di errore HTTP 406 e 415

Quindi è necessario restituire il codice di stato appropriato se è richiesto un altro formato.

Sembra che ho due scelte:

  1. 406 - non è accettabile
  2. 415 - Media Tipo di supporto non

Sarebbe bello se qualcuno potesse illuminarmi per la semantica di i due codici.

risposta

99

406 viene restituito dal server quando non può rispondere in base all'accettazione delle intestazioni di richiesta (ovvero hanno un'intestazione Accept che indica che solo XML desidera XML).

415 viene restituito dal server quando l'entità inviata in una richiesta (contenuto in un POST o PUT) ha un tipo di supporto non supportato (cioè hanno inviato XML).

quindi .. 406 quando non è possibile inviare ciò che vogliono, 415 quando inviano ciò che non si desidera.

Spero che questo aiuti!

3

406 viene utilizzato quando il client richiede una risposta in un tipo di contenuto non supportato (nel tuo caso, qualsiasi cosa diversa da JSON) utilizzando l'intestazione Accept. 415 d'altra parte viene utilizzato quando i dati POST o PUT dei client in un tipo di contenuto non supportato.

In breve: utilizzare 406 se non può essere emesso nel formato previsto e utilizzare 415 se non si supporta il formato di input.

Vedi RFC 2616 per le loro definizioni: 406 e 415

5

Per citare RFC2616:

406 Non accettabile

La risorsa identificata dalla richiesta è solo in grado di generare la risposta entità che hanno il contenuto caratteristiche non accettabili secondo le intestazioni di accettazione sen t nella richiesta.

Quando un client interroga il servizio, controllare le intestazioni di Accept* inviate; se non corrisponde a application/json (o a un carattere jolly, ad esempio */*), restituiscilo. La risposta dovrebbe indicare "serviamo solo JSON qui".

415 Tipo di Supporto Non

Il server si rifiuta di servire la richiesta perché l'entità della richiesta è in un formato non supportato dalla risorsa richiesta per il metodo richiesto .

Proprio tornando 415 Unsupported Media Type dovrebbe essere la risposta minima per "il cliente ha inviato qualcosa che non è JSON, non può funzionare con quel"; Non sono sicuro se c'è un'intestazione per indicare "è necessario inviare JSON"

-2

RFC2616 ti aiuta!

http://www.rfc2616.com/#10.4.7

http://www.rfc2616.com/#10.4.16

Vi consiglio di scegliere il 415, si adatta tua descrizione abbastanza bene.

Modifica: Oh. CIRCUITO INTEGRATO. "l'entità della richiesta è in un formato non supportato dalla risorsa richiesta". Quindi se hai una richiesta con contenuto e quel contenuto ha un tipo sbagliato, dovresti lanciare 415 -risposta.

+0

ha bisogno di entrambi, 2 diversi scenari – nathan

+0

Odio le domande a cui è possibile rispondere direttamente dalle specifiche. Sono dannatamente bravi a segnare ma richiedono risposte rapide e corrette. : / – Cheery

31
  • 406 se è stata inviata un'intestazione non è possibile eseguire la compilazione.
  • 415 se viene inviato un Content-Type non è possibile utilizzare.