我有一个REST API,允许使用HTTP POST修改资源。客户端可能会提交POST请求,导致不修改资源。我正在考虑使用通常用于条件响应的304响应来表明请求没有效果。我无法找到任何这方面的例子,所以我想我会问这里,看看是否有其他人这样做或对此有意见。
答案 0 :(得分:6)
经过一番考虑后,我决定坚持使用未更改的资源实体进行正常的200响应。我最初的意图是提供一种简明的方式来向客户表明资源未被修改。当我更多地考虑它时,我意识到为了对304响应做任何有用的事情,他们必须已经有一个缓存版本,在这种情况下,将缓存副本的版本与返回的版本进行比较是微不足道的。 200响应。
答案 1 :(得分:1)
我有一个REST API,允许使用HTTP POST修改资源。客户端可能会提交POST请求,导致不会修改资源。
RESTful方法中的HTTP POST意味着创建资源,而不是修改。要进行修改,您应该使用HTTP PUT。
当问题被修改时,问题的解决方案为,而在没有修改时,HTTP Status 200 OK。根据:
常见的用例是作为PUT请求的结果返回204,更新资源,而不改变显示给用户的页面的当前内容。如果创建了资源,则返回201 Created。如果页面应更改为新更新的页面,则应使用200。
例如:
-- 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}}