如果一个HTTP方法在使用相同的数据进行第二次调用的时候,不会对服务器的状态造成任何改变,那么这个方法就是幂等的(idempotent)。根据安全的方法的定义,因为所有安全的方法都不会修改服务器状态,所以它们天生就是幂等的。
PUT
和DELETE
虽然不安全,但却是幂等的,这是因为它们在进行第二次调用时都不会改变服务器的状态:因为服务器在执行第一个PUT
请求之后,URI指定的资源已经被更新或者创建出来了,所以针对同一个资源的第二次PUT
请求只会执行服务器已经执行过的动作;与此类似,虽然服务器对于同一个资源的第二次DELETE
请求可能会返回一个错误,但这个请求并不会改变服务器的状态。
相反,因为重复的POST
请求是否会改变服务器状态是由服务器自身决定的,所以POST
方法既不安全也非幂等。幂等性是一个非常重要的概念,本书第7章在介绍Web服务时将再次提及这个概念。