所以我正在开发一个 Rest API
当创建资源的 POST 并且缺少必填字段时,我应该返回什么?
400 - 错误请求
或者
412 - 前提条件失败
为什么?
所以我正在开发一个 Rest API
当创建资源的 POST 并且缺少必填字段时,我应该返回什么?
400 - 错误请求
或者
412 - 前提条件失败
为什么?
如果请求参数错误,请使用 400 。如果,等If-*
请求标头之一错误,请使用 412 。If-Match
If-Modified-Since
为什么?这正是 RFC 所说的。例如,请参阅此If-Match
规范摘录:
如果没有一个实体标签匹配,或者如果给出了“*”并且没有当前实体存在,服务器不能执行请求的方法,并且必须返回一个 412(Precondition Failed)响应。当客户端想要阻止更新方法(例如 PUT)修改自客户端上次检索后已更改的资源时,此行为最有用。
当您的服务器不满足客户端指定的条件时使用 412。
在您的情况下,您应该使用 400。这只是一个错误的请求。
有关前置条件标头的一些说明,请参阅此链接。
Etag 标头通常是一个字符串,它代表我们在 HTTP 标头中的资源。您请求具有 If-Match is a preconditional HTTP header 的资源。如果它与您发送的代码不匹配,它将发送 412。
If-None-Match 告诉服务器仅当 Etag 与客户端发送的不同时才处理整个响应。
您可以使用状态码 422。如果您不想,可以使用 400。