+− THE DAILY DIFFdev & AI news
SHIP IT

當回應消失時,Stripe 會記住您的請求

伺服器完成操作後,逾時可能會導致結帳不確定。

伺服器完成操作後,逾時可能會導致結帳不確定。這份「幕後」解釋器使用 Stripe API v1 記錄的冪等性合約,展示了穩定的操作金鑰、儲存的回應重播、參數和併發限制、保留期限和結果協調。

閱讀書面版本(英文) ↗

本影片涵蓋的內容

  • 冪等性涉及重複操作的預期效果。Stripe API v1 新增了記錄的儲存回應重播合約。
  • 同一邏輯動作的重試使用相同的金鑰和參數。在不同的 SDK 呼叫或應用程式重新啟動之間保留操作金鑰;真正新的動作需要自己的金鑰。
  • 在端點執行開始後,Stripe API v1 會儲存第一個請求的狀態和主體,包括 500 錯誤,並在重試時返回該儲存的回應。
  • 具有相同金鑰但參數已更改的請求會產生不符。驗證失敗和併發執行衝突不會為該嘗試儲存冪等結果,並且可以重試。
  • Stripe 會保留 API v1 金鑰至少 24 小時,之後可能會將其清除。將未解決的網路重試限制在最初的 24 小時內,然後停止並協調,然後再重複操作。
  • 在連線恢復後,快取的 500 錯誤可能會持續重播。原始操作可能產生副作用;使用相關物件、Dashboard 請求和 Webhooks 來確定其結果。
  • API v2 使用不同的重播語義。金鑰不能為電子郵件、庫存和每個本地資料庫操作建立通用的精確一次交付。

翻譯的文字記錄

從英文原文旁白翻譯。可用的音頻和字幕由 YouTube 控制。

逾時是否取消了您的付款?

0:00 您認為逾時意味著您的付款失敗。 伺服器可以在回覆消失時完成, 讓您的結帳自信地顯示空無一物。 為什麼重試會再次收費? Stripe 如何記住一次嘗試? 您應該何時停止重試? 並記住一個討厭的細節。 一個記住的錯誤可能會比網路問題更長久。

0:17 我們稍後會再討論。 這是 The Daily Diff,幕後揭秘。

冪等性金鑰識別什麼?

0:21 冪等性意味著重複操作與執行一次操作具有相同的預期效果。 一次。冪等性金鑰標記一個邏輯動作。 Stripe 的 API 版本一在重試時識別該標籤並重播已儲存的 回應。想像一下購買咖啡。 Stripe 完成了您的付款請求,但回應在返回時遺失了。 家。客戶看到一個轉圈圈的符號。 他們的銀行可能有更令人興奮的解釋。 未受保護的建立請求可能會重複副作用。

相同的金鑰如何使重試安全?

0:45 在第一次嘗試之前附加一個唯一的金鑰,並將其保留用於重試。 如果您的應用程式重新啟動,請在您的記錄中保留該金鑰和操作。 記錄中。對於 Stripe 的版本一 API,一旦端點執行開始, 第一個請求的狀態和主體都會儲存起來。 再次發送相同的金鑰和參數,Stripe 將返回儲存的回應。 咖啡保持原位,而收據再次傳遞。

Stripe 到底儲存了什麼?

1:07 這是 Stripe 的實際措辭。 使用相同金鑰的重試會返回儲存的回應, 包括五百個錯誤。 文件比您樂觀命名的重試助手做得更多。 客戶再次點擊。 您的應用程式決定是恢復待處理的購買還是開始另一個購買。 一個。真正的新咖啡獲得一個新的金鑰。 每個網路重試都有一個新金鑰會破壞保護。

1:27 使用相同金鑰但不同參數會觸發不符。

當請求更改時會發生什麼?

1:30 如果參數驗證失敗,或者具有該金鑰的另一個請求仍在 執行中,Stripe 不會為該嘗試儲存冪等結果。 這些請求可以重試。 一個競態請求會產生衝突。 這些是版本一的規則。 版本二的行為有所不同。 標頭不能保證您的系統中精確一次的交付。 電子郵件、庫存和您的資料庫都需要錯誤處理。

1:52 該金鑰在其記錄的範圍內保護操作。 Stripe 至少保留版本一金鑰二十四小時,之後可以清除它們。

記住的結果可以安全重試多久?

1:59 它們。被清除的金鑰可以執行新的請求。 在第一天內保留未解決的重試。 除此之外,停止並協調原始結果。 使用指數退避和抖動給伺服器喘息的空間。 否則重試會在一家正在燃燒的咖啡店外排隊。 Stripe 的程式庫處理重試,但請檢查您程式庫的預設值。 那個粘人的錯誤是關鍵。

為什麼記住的錯誤會一直回來?

2:20 在連線恢復後,快取的五百個回應會持續重播。 原始操作可能已產生副作用。 使用物件、Dashboard 和 Webhooks 解析其結果。 一個新的金鑰可以重複該動作。 如果您寧願閱讀而不是聽我說,那麼差異會每天早上免費發送到您的收件箱, 在 the daily diff dot dev,連結如下。

我會發布帶有此合約的重試按鈕嗎?

2:39 判決,幕後揭秘。 發布。我會發布帶有受限重試和協調的穩定金鑰, 這樣客戶就可以享用咖啡,而無需資助您的分散式系統教育。 這就是今天的差異。 我是來自 Axrisi 的 Niko。 負責任地合併。

來源

  1. Idempotent requestsStripe Docs
  2. Designing robust and predictable APIs with idempotencyStripe Engineering — Brandur Leach
  3. Advanced error handlingStripe Docs
  4. HTTP Semantics — RFC 9110 §9.2.2 Idempotent MethodsIETF / RFC Editor

相關影片

under-the-hood · zh-HK · 2026年9月24日

SAML,內部構造:信件中的簽名

SAML 讓您登入幾乎所有工作應用程式,其簽名位於所簽署的 XML 內部。內部構造:應用程式、瀏覽器和身分提供者之間的登入過程,斷言的樣子,為何正規化必須就每個位元組達成一致,以及為何相同的錯誤類別從 2012 年到 2025 年一直重現。受 Trail of Bits 的「SAML:壞設計的碎形」(在 Hacker News 上獲得 312 分) 啟發。

3:02 ↗
under-the-hood · zh-HK · 2026年9月23日

模型「壽終正寢」後,幕後有甚麼變化?

AI 模型不會消亡 — 它只會有一個關閉日期,然後第二天早上,你的 API 呼叫會收到一個 404 錯誤:「此模型已被棄用,請在此處了解更多資訊。」幕後:四階段流程(活躍 → 傳統 → 棄用 → 退役)、通知期限(OpenAI ≥ 6 個月 / 3 個月 / 預覽版約 2 星期;Anthropic ≥ 60 天)、開發人員會遇到甚麼問題(響亮的 404 錯誤、悄無聲息的評估漂移、Claude 4.

3:15 ↗