http协议的幂等性
1 Http协议本身是一种面向资源的应用层协议,但对http协议的使用实际上存在着两种不同的方式
一种是Restful的,它把http当成应用层协议,比较忠实地遵守了http协议的各种规定;
另一种是SOA的,它并没有完全把http当成应用层协议,而是把http作为了传输层协议,然后在http之上建立了自己的应用层协议。
接下来讨论的幂等性是针对Restful风格的。幂等性不属于特定的协议,它是分布式系统的一种特性。
2 http协议的幂等性是指一次和多次请求某一个资源应该具有同样的副作用(对资源的影响),而不是返回相同的结果。
3 http协议中哪些方法是幂等的
GET方法用于获取资源,不修改资源,具有幂等性
DELETE方法用于删除资源,有副作用,但它满足幂等性。调用一次和N次对系统产生的副作用是相同的,因此,调用者可以多次调用或刷新页面而不必担心引起错误。
POST方法对应的URI并非资源本身,而是资源的接收者,两次post请求(新建或修改)会在服务端创建两个资源,它们具有不用的URI,所以post方法不具有幂等性。
PUT方法所对应的URI是要创建或更新的资源本身,对同一个URI进行多次put的副作用和一次put是相同的,因此put方法具备幂等性。