Význam chybového kódu HTTP 400 BAD request?

Mám požiadavku JSON, ktorú odosielam na adresu HTTP URL.

Má sa to považovať za 400, keď pole requestedResource existuje, ale "Roman" je neplatná hodnota pre toto pole?

[{requestedResource:"Roman"}] 

Malo by sa to považovať za 400, kde pole "bla" vôbec neexistuje?

[{blah:"Roman"}]

Hodnota 400 znamená, že požiadavka bola nesprávne formulovaná. Inými slovami, dátový tok odoslaný klientom na server sa neriadil pravidlami.

V prípade rozhrania API REST s užitočným zaťažením JSON sa 400 zvyčajne a povedal by som, že správne, používa na označenie toho, že JSON je nejakým spôsobom neplatný podľa špecifikácie API pre danú službu.

Podľa tejto logiky by oba scenáre, ktoré ste uviedli, mali byť 400's.

Predstavte si, že by to namiesto JSON bolo XML. V oboch prípadoch by XML nikdy neprešlo validáciou schémy - buď kvôli nedefinovanému prvku, alebo nesprávnej hodnote prvku. To by bola zlá požiadavka. To isté platí aj v tomto prípade.

Komentáre (6)

Z w3.org

10.4.1 400 Zlá požiadavka

Server nerozumel požiadavke z dôvodu nesprávneho tvaru syntaxe. Klient NESMIE opakovať požiadavku bez úpravami.

Komentáre (5)

Premýšľajte o očakávaniach.

Ako klientská aplikácia očakávate, že sa dozviete, ak sa na strane servera niečo pokazí. Ak má server vyhodiť chybu, keď chýba blah alebo hodnota requestedResource je nesprávna, bola by vhodná chyba 400.

Komentáre (0)