400 BAD request HTTP-fejlkode med betydning?

Jeg har en JSON-anmodning, som jeg sender til en HTTP-URL.

Skal dette behandles som 400, hvor feltet requestedResource findes, men "Roman" er en ugyldig værdi for dette felt?

[{requestedResource:"Roman"}] 

Skal dette behandles som 400, hvor feltet &"blah" slet ikke eksisterer?

[{blah:"Roman"}]

En 400 betyder, at anmodningen var forkert udformet. Med andre ord fulgte den datastrøm, som klienten sendte til serveren, ikke reglerne.

I tilfælde af et REST API med en JSON-nytedata, bruges 400 typisk, og korrekt vil jeg sige, til at angive, at JSON'en er ugyldig på en eller anden måde i henhold til API-specifikationen for tjenesten.

Efter den logik burde begge de scenarier, du har givet, være 400's.

Forestil dig i stedet, at det var XML i stedet for JSON. I begge tilfælde ville XML aldrig bestå skemavalidering - enten på grund af et udefineret element eller en ukorrekt elementværdi. Det ville være en dårlig anmodning. Det samme gælder her.

Kommentarer (6)

Fra w3.org

10.4.1 400 Bad Request

Anmodningen kunne ikke forstås af serveren på grund af en forkert formet syntaks. Klienten BØR IKKE gentage anmodningen uden ændringer.

Kommentarer (5)

Tænk på forventningerne.

Som klient-app forventer du at vide, hvis noget går galt på serversiden. Hvis serveren skal sende en fejl, når blah mangler eller requestedResource-værdien er forkert, så ville en 400-fejl være passende.

Kommentarer (0)