Ho una richiesta JSON che sto inviando a un URL HTTP.
Dovrebbe essere trattato come 400
dove il campo requestedResource
esiste ma "Roman"
è un valore non valido per questo campo?
[{requestedResource:"Roman"}]
Dovrebbe essere trattato come 400
dove il campo "blah"
non esiste affatto?
[{blah:"Roman"}]
Un 400 significa che la richiesta era malformata. In altre parole, il flusso di dati inviato dal client al server non ha seguito le regole.
Nel caso di un'API REST con un payload JSON, i 400 sono tipicamente, e correttamente direi, usati per indicare che il JSON non è valido in qualche modo secondo le specifiche API del servizio.
Secondo questa logica, entrambi gli scenari che hai fornito dovrebbero essere 400's.
Immagina invece che questo sia XML piuttosto che JSON. In entrambi i casi, l'XML non passerebbe mai la validazione dello schema - o a causa di un elemento non definito o di un valore improprio dell'elemento. Sarebbe una cattiva richiesta. Stessa cosa qui.
Pensa alle aspettative.
Come applicazione client, ti aspetti di sapere se qualcosa va storto sul lato server. Se il server deve lanciare un errore quando manca blah
o il valore requestedResource
non è corretto, allora un errore 400 sarebbe appropriato.