Altro
Codici di stato REST HTTP per convalida fallita o duplicato non valido
Sto costruendo un'applicazione con un'API basata su REST e sono arrivato al punto in cui sto specificando i codici di stato per ogni richiesta.
Quale codice di stato dovrei inviare per le richieste che falliscono la validazione o dove una richiesta sta cercando di aggiungere un duplicato nel mio database?
Ho guardato attraverso http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html ma nessuno di loro sembra giusto.
C'è una pratica comune quando si inviano i codici di stato?
778
3
Per il fallimento della convalida dell'input: 400 Bad Request + la tua descrizione opzionale. Questo è suggerito nel libro "RESTful Web Services". Per il doppio invio: 409 Conflitto
Aggiornamento giugno 2014
La specifica pertinente era RFC2616, che dava l'uso di 400 (Bad Request) in modo piuttosto stretto come La richiesta non può essere compresa dal server a causa di una sintassi malformata
Quindi si sarebbe potuto sostenere che era inappropriato per gli errori semantici. Ma non più; da giugno 2014 lo standard pertinente RFC 7231, che sostituisce il precedente RFC2616, dà l'uso di 400 (Bad Request) più ampiamente come il server non può o non elaborerà la richiesta a causa di qualcosa che è percepito come un errore del client
Dovresti sicuramente dare una spiegazione più dettagliata nelle intestazioni e/o nel corpo della risposta (ad esempio con un'intestazione personalizzata -
X-Status-Reason: Validation failed
).Raccomando codice di stato 422, "Unprocessable Entity".
11.2. 422 Entità non processabile