通常,我们使用 POST 在服务器端创建资源。
所以理想情况下,如果一切顺利,服务器应该以201 Created
HTTP 状态响应,或者在异步操作的情况下以HTTP 状态响应202 Accepted
。
是否有任何有效的 POST 请求可以返回200 OK
HTTP 状态的场景?
或者我们永远不应该200 OK
对 POST 请求使用HTTP 状态?
我认为 200 是对 Internet 上 POST 请求的一种非常常见的响应。使用它就好了。
来自RFC 7231:
6.3.1. 200 正常
200 (OK) 状态码表示请求成功。200 响应中发送的负载取决于请求方法。
对于本规范定义的方法,
有效载荷的预期含义可以概括为:获取目标资源的表示;
HEAD 与 GET 相同的表示,但没有表示数据;
POST 表示动作的状态或从动作中获得的结果;
PUT、DELETE 表示动作的状态;
OPTIONS 表示通信选项;
跟踪终端服务器接收到的请求消息的表示。
和第 4.3.3 节:
对 POST 请求的响应仅在包含明确的新鲜度信息时才可缓存(参见 [RFC7234] 的第 4.2.1 节)。但是,POST 缓存并未广泛实现。对于源服务器希望客户端能够以一种可以被稍后的 GET 重用的方式缓存 POST 结果的情况,源服务器可以发送包含结果和内容位置的 200(OK)响应与 POST 的有效请求 URI 具有相同值的标头字段(第 3.1.4.2 节)。
是的,您可以返回200 Ok
HTTP 状态,但您应该返回响应BODY。
一般来说,我们根据您的 API 要求有 3 种选择:
返回201 Created
HTTP 状态,并带有EMPTY BODY。
如果您不需要返回响应正文。
返回200 Ok
HTTP 状态,带有BODY。
如果您需要返回响应正文[包含创建的资源]。
返回202 Accepted
HTTP 状态,并带有EMPTY BODY。
如果操作将排队。