如果一个方法不会改变资源的表述,那么这个方法就被认为是安全的。
例如 HTTP GET 和 HTTP HEAD 就被认为是安全的,但需要注意的是,这并不意味着执行GET请求就不会引起其它的资源操作,在表面之下,你的服务层有可能会对其它相关的一些表的数据做出修改,但是本资源的表述不应该被改变。但即使相关的一些数据被修改了,这也不是API消费者所请求的事。
如果一个方法执行多次和执行一次的结果(带来的副作用)是一样的话,那么这个方法就被认为是幂等的。
HTTP 方法的安全性和幂等性是 HTTP标准文档中的一部分(https://tools.ietf.org/html/rfc7231,https://tools.ietf.org/html/rfc5789)。它们不仅仅是纯理论,它们应该在不同的业务场景中合理的使用。
现在我们都应该知道了为什么 GET 请求不应该用来创建或者修改资源了。。。