PUT
个请求可以有很多结果,我想知道哪个状态代码最适合每个人。
说我想创建一个新资源,所以我做了类似的事情:
PUT http://example.com/resources/resource-1
我会得到一个HTTP 201
,因为已经创建了一个新资源。
现在我想更新此资源,因此我使用新内容执行相同的请求:
PUT http://example.com/resources/resource-1
我得到HTTP 200
或HTTP 204
,因为资源已更新。但是,如果我再次使用相同的内容发送此请求怎么办?即使没有更新任何内容,服务器是否应该返回HTTP 200
或HTTP 204
?
我知道HTTP 200
和HTTP 204
都只是表示请求已成功处理,即使数据没有更改,请求仍然可以(并且应该)成功处理。但有没有办法告诉客户端请求已成功处理但服务器端没有任何变化?如果有,是否应该用于PUT
请求? PUT
是幂等的,是否应根据服务器端的实际处理返回不同的状态(只要在此处理过程中没有错误发生)?
答案 0 :(得分:11)
但有没有办法告诉客户端请求已成功处理但服务器端没有任何变化?
是的,但那不是状态代码的用途。
返回200 OK和实体的表示,或者204 No Content并且不返回任何内容。
如果没有应用任何更改,请使用类似ETag的标题。客户可以将ETag与之前的值进行比较,并确定没有任何更改。