幂等性

定义

幂等性是指同一个操作执行一次或多次所产生的效果是相同的,不会因为重复执行而产生额外影响。

数学公式表达

\[O(S) = S' \]

\[O(O(S)) = O(S) \]

核心思想

  1. 一次请求 = 多次请求:客户端无论调用一次还是多次,系统的状态改变结果都是一样的。

  2. 只影响一次:第一次执行后对资源有变更,后续重复执行不会再次变更状态。

  3. 安全重试:允许客户端在超时或网络错误时安全地重试,而不用担心重复执行造成错误。

举例

HTTP 方法的幂等性

  1. GET:获取资源,重复调用不会改变服务器状态 → 幂等。
  2. PUT:更新资源为某个值,重复调用结果还是那个值 → 幂等。
    例如:执行 N 次,结果都是 name=张三
PUT /user/id
 
 body: { "name": "张三" }
  1. DELETE:删除资源,第一次删除后资源已不存在,再调用结果还是不存在 → 幂等。

  2. POST:创建资源,重复调用可能会创建多个资源 → 非幂等。
    例如:POST /orders 每次调用都可能生成一个新订单。

数据库操作

  1. 幂等(不管执行多少次,field 最终都是 100)
UPDATE table SET field = 100 WHERE id = 1
  1. 非幂等(每执行一次 count 加 1,多次执行结果不同)
UPDATE table SET count = count + 1 WHERE id = 1
posted @ 2026-01-19 16:36  xiaojiahuo  阅读(1)  评论(0)    收藏  举报