così sto sviluppando un'API RESTcodice di stato HTTP 400 vs 412
Quando un POST è fatto per creare una risorsa e un campo obbligatorio manca cosa devo tornare?
400 - Bad Request
O
412 - Precondizione Fallita
e perché?
così sto sviluppando un'API RESTcodice di stato HTTP 400 vs 412
Quando un POST è fatto per creare una risorsa e un campo obbligatorio manca cosa devo tornare?
400 - Bad Request
O
412 - Precondizione Fallita
e perché?
Utilizzare 400 se i parametri sono errati. Utilizzare 412 se una delle intestazioni come If-Match
, If-Modified-Since
, ecc. È una delle richieste If-*
, ecc.
Perché? Questo è quello che dice RFC. Si veda ad esempio questo estratto di specifica If-Match
:
Se nessuno della partita tag entità, o se "*", e di conseguenza esiste nessuna entità corrente, il server NON DEVE eseguire il metodo richiesto, e deve restituire un 412 (Precondition Failed) risposta. Questo comportamento è molto utile quando il client desidera impedire a un metodo di aggiornamento, come PUT, di modificare una risorsa che è stata modificata da quando il client l'ha recuperata per l'ultima volta.
412 viene utilizzato quando il server non soddisfa una condizione specificata dal client.
Nel tuo caso dovresti usare un 400. È solo una cattiva richiesta.
Vedere questo link per alcune spiegazioni sulle intestazioni pre-condizione.
L'intestazione Etag è, in genere, una stringa che rappresenta la nostra risorsa nelle intestazioni HTTP. La richiesta di una risorsa con If-Match è un'intestazione HTTP precondizionata . Invia un 412 se non corrisponde a il codice che hai inviato.
If-None-Match indica al server di elaborare un'intera risposta solo se l'Etag è diverso da quello inviato dal client.
Perché il downvote? cosa c'è di sbagliato nella risposta? – nunespascal
Pensa che qualcuno abbia passato una brutta giornata. Basta ignorarlo e lasciare che il sistema faccia il suo lavoro :) – BalusC
Avere un upvote per bilanciare. –
È possibile utilizzare il codice di stato 422. Se non si desidera, 400 va bene.
Inoltre, la richiesta non può essere soddisfatta a causa della sintassi non valida per 400. – Rob
Questa pagina mi ha davvero aiutato - http://odino.org/don-t-rape-http-if-none-match-the- 412-http-status-code/- Utilizzando le richieste "PUT" per il contesto, mi è stato più facile capire a cosa serve, poiché è sempre facile abusare di determinati codici di stato. – Charlie