Betekenis van HTTP-foutcode 400 BAD request?

Ik heb een JSON verzoek dat ik naar een HTTP URL stuur.

Moet dit worden behandeld als 400 waar requestedResource veld bestaat maar "Roman" is een ongeldige waarde voor dit veld?

[{requestedResource:"Roman"}] 

Moet dit worden behandeld als 400 waar "blah" veld helemaal niet bestaat?

[{blah:"Roman"}]

Een 400 betekent dat het verzoek misvormd was. Met andere woorden, de gegevensstroom die door de client naar de server werd gestuurd, voldeed niet aan de regels.

In het geval van een REST API met een JSON payload, worden 400's typisch, en correct zou ik zeggen, gebruikt om aan te geven dat de JSON op een of andere manier ongeldig is volgens de API-specificatie voor de service.

Volgens die logica zouden beide scenario's die je gaf 400's moeten zijn.

Stel je voor dat het XML was in plaats van JSON. In beide gevallen zou de XML nooit schema-validatie doorstaan - hetzij vanwege een ongedefinieerd element of een onjuiste elementwaarde. Dat zou een slecht verzoek zijn. Hetzelfde geldt hier.

Commentaren (6)

Van w3.org

10.4.1 400 Slecht verzoek

Het verzoek kon niet worden begrepen door de server vanwege een syntax. De client ZOU het verzoek NIET moeten herhalen zonder wijzigingen.

Commentaren (5)

Denk aan de verwachtingen.

Als client app verwacht je te weten of er iets mis gaat aan de server kant. Als de server een error moet gooien als blah ontbreekt of de requestedResource waarde onjuist is dan zou een 400 error op zijn plaats zijn.

Commentaren (0)