一个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
如果是幂等的,应该根据服务器端的实际处理返回不同的状态(只要在此处理过程中没有发生错误)?
但有没有办法告诉客户端请求已成功处理但服务器端没有任何变化?
是的,但这不是状态代码的用途.
返回200 OK和实体的表示,或204 No Content并且不返回任何内容.
如果没有应用任何更改,请使用类似ETag的标题.客户端可以将ETag与其先前的值进行比较,并确定没有任何更改.