跳至主要内容
短.be

幂等性

同一操作无论执行多少次结果都不变的特性。在 API 设计中保障重复请求安全处理的关键概念。

2025年12月17日 · 约 1 分钟阅读

短链接

幂等性 (Idempotency) 是指同一操作执行一次和执行多次的结果完全相同的特性。数学表达为 f(f(x)) = f(x)。在 Web API 设计中,这是防止网络故障或超时导致重试时产生重复处理的重要概念。

HTTP 方法的幂等性在规范中有明确定义。GET、PUT、DELETE 是幂等的 (无论执行多少次结果相同),POST 是非幂等的 (每次执行可能创建新资源)。

短链接服务的 API 设计中,幂等性是核心课题。对同一 URL 发送两次缩短请求时,应该生成两个不同的短链接,还是返回同一个短链接?幂等设计下,相同输入始终返回相同的短链接。这样即使因网络错误而重试,也不会生成重复的短链接。

实现幂等性的常见手法是使用 Idempotency Key (幂等键)。客户端在请求中附加唯一键 (如 UUID),服务器缓存该键对应的处理结果。当收到相同键的请求时,不再重新处理而是直接返回缓存结果。Stripe 的支付 API 是这一手法的典型代表。

短链接服务中的幂等性实现通常结合 URL 规范化。对输入 URL 进行规范化后计算哈希值,相同哈希值返回相同的短码。这样 "https://example.com/page" 和 "https://example.com/page/" 就会映射到同一个短链接。相关书籍可在 Amazon 上查阅。

分享到 XHatena

这篇文章对您有帮助吗?

相关术语

相关文章

常见问题

为什么 API 需要幂等性?
网络故障或超时导致请求失败时,客户端会重试。没有幂等性保障,重试可能导致重复处理 (重复扣款、重复注册等)。有了幂等性,重试就是安全的。
Idempotency Key 如何实现?
客户端在请求头中附加 UUID (如 Idempotency-Key: 550e8400-...),服务器将该键和处理结果缓存到 Redis 等存储中。收到相同键的请求时,直接返回缓存结果而不重新处理。
GET 请求一定是幂等的吗?
按 HTTP 规范,GET 应当是幂等的。用 GET 请求修改数据的实现违反了规范,会导致缓存和代理无法正常工作。数据修改应使用 POST、PUT、DELETE。

想要创建短链接吗?

免费缩短网址