PUT的HTTP状态代码

时间:2015-12-04 11:24:29

标签: rest http

PUT个请求可以有很多结果,我想知道哪个状态代码最适合每个人。

说我想创建一个新资源,所以我做了类似的事情:

PUT http://example.com/resources/resource-1

我会得到一个HTTP 201,因为已经创建了一个新资源。

现在我想更新此资源,因此我使用新内容执行相同的请求:

PUT http://example.com/resources/resource-1

我得到HTTP 200HTTP 204,因为资源已更新。但是,如果我再次使用相同的内容发送此请求怎么办?即使没有更新任何内容,服务器是否应该返回HTTP 200HTTP 204

我知道HTTP 200HTTP 204都只是表示请求已成功处理,即使数据没有更改,请求仍然可以(并且应该)成功处理。但有没有办法告诉客户端请求已成功处理但服务器端没有任何变化?如果有,是否应该用于PUT请求? PUT是幂等的,是否应根据服务器端的实际处理返回不同的状态(只要在此处理过程中没有错误发生)?

1 个答案:

答案 0 :(得分:11)

  

但有没有办法告诉客户端请求已成功处理但服务器端没有任何变化?

是的,但那不是状态代码的用途。

返回200 OK和实体的表示,或者204 No Content并且不返回任何内容。

如果没有应用任何更改,请使用类似ETag的标题。客户可以将ETag与之前的值进行比较,并确定没有任何更改。