幂等性
定义
幂等性是指同一个操作执行一次或多次所产生的效果是相同的,不会因为重复执行而产生额外影响。
数学公式表达
\[O(S) = S'
\]
\[O(O(S)) = O(S)
\]
核心思想
-
一次请求 = 多次请求:客户端无论调用一次还是多次,系统的状态改变结果都是一样的。
-
只影响一次:第一次执行后对资源有变更,后续重复执行不会再次变更状态。
-
安全重试:允许客户端在超时或网络错误时安全地重试,而不用担心重复执行造成错误。
举例
HTTP 方法的幂等性
- GET:获取资源,重复调用不会改变服务器状态 → 幂等。
- PUT:更新资源为某个值,重复调用结果还是那个值 → 幂等。
例如:执行 N 次,结果都是 name=张三
PUT /user/id
body: { "name": "张三" }
-
DELETE:删除资源,第一次删除后资源已不存在,再调用结果还是不存在 → 幂等。
-
POST:创建资源,重复调用可能会创建多个资源 → 非幂等。
例如:POST /orders 每次调用都可能生成一个新订单。
数据库操作
- 幂等(不管执行多少次,field 最终都是 100)
UPDATE table SET field = 100 WHERE id = 1
- 非幂等(每执行一次 count 加 1,多次执行结果不同)
UPDATE table SET count = count + 1 WHERE id = 1

浙公网安备 33010602011771号