一个幂等的HTTP方法是那种当被请求多次时并不会产生不同结果的HTTP方法。这与这个方法到底被请求了多少遍没有关系。结果应该是相同的。简要来说,这意味着请求成功执行的结果与执行次数无关。举个例子,在数学里,把0加到任意一个数字的操作都是幂等的。
POST
API不是幂等的。POST
不是幂等的GET
, PUT
, DELETE
, HEAD
, OPTIONS
以及TRACE
是幂等的。GET
, HEAD
, OPTIONS
以及TRACE
方法并不改变服务器上资源的状态,它们仅是单纯地用来获取资源的表现层或者元数据。所以多次调用这些请求并不会在服务端产生任何写操作,所以GET
, HEAD
, OPTIONS
以及TRACE
是幂等的。DELETE
请求时,第一个请求将会从服务器删除资源并且返回200 (OK)
或者204 (No Content)
,剩下的N-1个请求将会返回404 (Not Found)
。显然,剩下的N-1个请求的响应与第一个不同,但是此时在服务端并没有任何资源状态的改变,因为源资源已经在第一个请求完成时被删除了。所以,DELETE是幂等的。译者注:这个API的用途是删除某个资源集合的最后一个元素。
DELETE
请求不是幂等的。在这个例子中,建议将此处API请求方式改为POST,因为POST不是幂等的。