🍀

【Shopify.dev和訳】API usage/Idempotent requests

2021/09/09に公開

この記事について

この記事は、API usage/Idempotent requestsの記事を和訳したものです。

Shopify アプリのご紹介

Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。

https://apps.shopify.com/shopify-application-314?locale=ja&from=daniel

Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。

https://apps.shopify.com/font-picker-1?locale=ja&from=daniel

idempotent リクエスト

Shopify API は idempotency をサポートしています。これにより、接続の問題で失敗したかもしれない API リクエストを、重複や競合を引き起こすことなく安全に再試行することができます。

idempotency キー

idempotency key (idempotencyKey) または unique token (unique_token) は、あなたのアプリによって生成されたユニークな文字列識別子です。Shopify はこの識別子を使用して、同じリクエストの再試行を認識します。

idempotent リクエストの仕組み

API リクエストが転送中に中断された場合、レスポンスを受け取れない可能性があります。リクエストに idempotency key を含めることで、同じパラメータを持つリクエストが何度再試行されても、一度だけ実行されます。

例えば、Shopify で支払いを処理するために REST Admin API を使用しているとします。ネットワーク接続エラーのためにレスポンスを受信できなかった場合、同じunique_tokenを使ってリクエストを再試行することで、1 つの支払いだけが処理されることが保証されます。

POST /admin/checkouts/#{token}/payments.json HTTP/1.1
Host: shop-name.myshopify.com
Content-Type: application/json
X-Shopify-Access-Token: #{shopify_access_token}

{
  "payment": {
    "request_details": {
      "ip_address": "123.1.1.1",
      "accept_language": "en-US,en;q=0.8,fr;q=0.6",
      "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/54.0.2840.98 Safari\/537.36"
    },
    "amount": "1675.99",
    "session_id": #{id},
    "unique_token": "client-side-idempotency-key"
  }
}

idempotency キーを受け付けるリソース

クレジットカードの支払いを処理する POST リクエスト、サブスクリプションのための請求書を作成するリクエスト、または収益の詳細を取得するリクエストは、idempotency キーを受け入れます。GET および DELETE リクエストは、定義上、idempotency であり、リクエストの一部として idempotency キーを送信する必要はありません。

idempotency key(GraphQL)やユニークトークン(REST)を受け付けるリソースの例としては、以下のものがあります。

GraphQL Admin API

GraphQL Storefront API

REST Admin API

Shopify アプリのご紹介

Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。

https://apps.shopify.com/shopify-application-314?locale=ja&from=daniel

Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。

https://apps.shopify.com/font-picker-1?locale=ja&from=daniel

Discussion

ログインするとコメントできます