原文:http://www.colorfuldays.org/program/http_idempotence/
最近在看RESTful及HTTP协议相关的书和文档,其中都提到一个“幂等”的概念。何为“幂等”? “幂等”是指一个操作重复执行N次得到的结果与执行一次是相等的。在HTTP协议中,要求GET,HEADER,PUT和DELETE方法是幂等的。其中GET,HEADER,DELETE的幂等性很好理解,而PUT方法就有些复杂。PUT方法要求,第一次PUT方法执行之后,其在服务器上生成的资源,不能被后续的PUT方法更改。而POST方法不具备幂等性,因此一个表单重复使用POST提交,在服务器上可能会存在两份记录。
具备“幂等性”的方法是安全的,因此在程序中幂等性也是应该追求的一项性质,很多时候程序不应该假定用户的行为,不能因为用户的重复操作而导致数据出现问题。