使用HTTP 304响应POST

时间:2013-11-18 22:28:36

标签: http rest post http-post http-status-code-304

我有一个REST API,允许使用HTTP POST修改资源。客户端可能会提交POST请求,导致不修改资源。我正在考虑使用通常用于条件响应的304响应来表明请求没有效果。我无法找到任何这方面的例子,所以我想我会问这里,看看是否有其他人这样做或对此有意见。

2 个答案:

答案 0 :(得分:6)

经过一番考虑后,我决定坚持使用未更改的资源实体进行正常的200响应。我最初的意图是提供一种简明的方式来向客户表明资源未被修改。当我更多地考虑它时,我意识到为了对304响应做任何有用的事情,他们必须已经有一个缓存版本,在这种情况下,将缓存副本的版本与返回的版本进行比较是微不足道的。 200响应。

答案 1 :(得分:1)

  

我有一个REST API,允许使用HTTP POST修改资源。客户端可能会提交POST请求,导致不会修改资源。

RESTful方法中的HTTP POST意味着创建资源,而不是修改。要进行修改,您应该使用HTTP PUT。

当问题被修改时,问题的解决方案为enter image description here,而在没有修改时,HTTP Status 200 OK。根据:

  

常见的用例是作为PUT请求的结果返回204,更新资源,而不改变显示给用户的页面的当前内容。如果创建了资源,则返回201 Created。如果页面应更改为新更新的页面,则应使用200。

     

- HTTP Status 204 No Content

例如:

-- Request
PUT /people/1 HTTP/1.1
Content-Type: application/json

{
    "name": "John"
}

-- Response
HTTP/1.1 204 No Content
 
-- Request
PUT /people/1 HTTP/1.1
Content-Type: application/json

{
    "name": "Robert"
}

-- Response
HTTP/1.1 200 OK
Content-Type: application/json

{
    "name": "Robert"
}
 
{{1}}