So I'm developing a Rest API
When a POST is made to create a resource and a required field is missing what should I return?
400 - Bad Request
OR
412 - Precondition Failed
And Why?
So I'm developing a Rest API
When a POST is made to create a resource and a required field is missing what should I return?
400 - Bad Request
OR
412 - Precondition Failed
And Why?
Use 400 if the request parameters are wrong. Use 412 if one of the If-*
request headers like If-Match
, If-Modified-Since
, etc are wrong.
Why? That's just what RFC says. See for example this extract of If-Match
specification:
If none of the entity tags match, or if "*" is given and no current entity exists, the server MUST NOT perform the requested method, and MUST return a 412 (Precondition Failed) response. This behavior is most useful when the client wants to prevent an updating method, such as PUT, from modifying a resource that has changed since the client last retrieved it.
412 is used when your server does not meet a condition specified by the client.
In your case you should use a 400. It is just a bad request.
See this link for some explaination on pre-condition headers.
The Etag header is, generally, a string that represents our resource in the HTTP headers. You ask for a resource with an If-Match is a preconditional HTTP header. It will send a 412 if it does not match the code you sent.
If-None-Match tells the server to process a whole response only if the Etag is different from the one sent by the client.
You could use status code 422. If you don't want to, 400 is fine.
© 2022 - 2024 — McMap. All rights reserved.