Gradim aplikacijo z API-jem, ki temelji na REST, in prišel sem do točke, ko za vsak zahtevek določam kode stanja.
Katero kodo stanja naj pošljem za zahtevke, ki ne uspejo pri preverjanju, ali za zahtevke, ki skušajo dodati dvojnik v mojo zbirko podatkov?
Pregledal sem spletno stran http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html, vendar se mi nobena od njih ne zdi prava.
Ali obstaja skupna praksa pri pošiljanju kod stanja?
Za neuspešno preverjanje vnosa: 400 Bad Request + vaš neobvezni opis. To je predlagano v knjigi "RESTful Web Services". Za dvojno pošiljanje: 409 Conflict
Posodobitev junij 2014
Ustrezna specifikacija je bila RFC2616, ki je uporabo 400 (slaba zahteva) opredelila precej ozko
Strežnik zahteve ni razumel zaradi napačno oblikovane sintakse
Zato je bilo mogoče trditi, da je bila neprimerna za semantične napake. Vendar ne več; od junija 2014 ustrezni standard RFC 7231, ki nadomešča prejšnji RFC2616, navaja uporabo 400 (Bad Request) širše kot
strežnik ne more ali ne bo obdelal zahteve zaradi nečesa, kar je zaznano kot odjemalčeva napaka
Vsekakor bi morali v glavi in/ali telesu odgovora navesti podrobnejšo razlago (npr. z glavo po meri - X-Status-Reason: Validation failed
).
Priporočam koda stanja 422, "Neobdelana entiteta".
11.2. 422 Neobdelana entiteta
Statusna koda 422 (Unprocessable Entity) pomeni, da strežnik razume vrsto vsebine entitete zahteve (zato je statusna koda 415(Unsupported Media Type) neustrezna) in da je sintaksa entitete zahteve pravilna (zato je statusna koda 400 (Bad Request) neustrezna), vendar ni mogel obdelati vsebovanih navodil. To stanje napake se lahko na primer pojavi, če telo zahteve XML vsebuje dobro oblikovana (tj. skladenjsko pravilna), vendar semantično napačna navodila XML.