A PUT
请求可以有很多结果,我想知道哪个状态代码对每个请求都是最好的。PUT的HTTP状态代码
说我想创建一个新的资源,所以我做这样的事情:
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
是幂等性的,根据服务器端的实际处理情况是否应该返回不同的状态(只要在这个处理过程中没有错误发生)?
如果资源在第一个PUT请求中返回201,但在后续请求中返回200或204,那么它是否会违反幂等性(对于PUT是必需的)? – Ray
@ Ray no,因为idempotence是关于server_上的结果,或者更具体地说是由请求URL标识的资源的字节内容,而不是关于响应消息的内容。服务器上的结果在相同资源的连续PUT上不会更改。 :)请看例如:[_“请注意,虽然幂等操作在服务器上产生相同的结果(无副作用),但响应本身可能不一样(例如资源状态可能会在请求之间改变)”_](http ://www.restapitutorial.com/lessons/idempotency.html)。 – CodeCaster
呃......感谢您的澄清 - 完全有道理。 – Ray