🍀

【Shopify.dev和訳】API usage/Pagination/REST

2021/09/09に公開約9,200字

この記事について

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

記事内で使用する画像は、公式ドキュメント内の画像を引用して使用させていただいております。

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

REST Admin API にページネーションされたリクエストを作成

REST エンドポイントは、カーソルベースのページネーションをサポートします。このガイドでは、REST Admin API からページネーションされたデータを要求し、結果の各ページにアクセスする方法について説明します。

使い方 | How it works

カーソルベースのページネーションをサポートする REST エンドポイントにリクエストを送信すると、レスポンスのボディは結果の最初のページを返し、レスポンスヘッダーは結果の次のページと前のページ(該当する場合)へのリンクを返します。応答ヘッダーのリンクを使用して、結果のページを反復処理できます。

リンクヘッダーは次の構文を使用します。

#...
Link: "<https://{shop}.myshopify.com/admin/api/{version}/products.json?page_info={page_info}&limit={limit}>; rel={next}, <https://{shop}.myshopify.com/admin/api/{version}/products.json?page_info={page_info}&limit={limit}>; rel={previous}"
#...

リンクヘッダーには、relation-typesがリンクされたページと結果の現在のページとの関係を説明するrelパラメーターが含まれています。値はpreviousまたはnextのどちらかです。最初のリクエストが結果の追加ページを生成するのに十分な記録を返さない場合、レスポンスにはリンクヘッダーがありません。

パラメータ | Parameters

リンクヘッダーの URL には、最大 3 つまでパラメーターを含めることができます

  • page_info:あるページの結果にアクセスするために使用される一意の ID です。page_infoパラメータを変更することはできません。またリンクヘッダーの URL に表示されているとおりに使用しなければなりません。
  • limit:ページに表示する結果の最大数です。
  • fields:結果に表示するフィールドのコンマ区切りのリスト。このパラメーターは、一部のエンドポイントでのみ使えます。

page_infoパラメータを含むリクエストには、limitfields(エンドポイントに適用される場合)以外の他のパラメータを含めることはできません。結果を他のパラメーターでフィルター処理する場合は、最初のリクエストにそれらのパラメーターを含める必要があります。

サポートされているエンドポイント | Supported endpoints

次のエンドポイントでカーソルベースのページネーションを使用できます。

2021 年 1 月リリース

2019 年 10 月リリース

2019 年 7 月リリース

Saved searches

  • ArticleSavedSearch
  • BalanceTransactionSavedSearch
  • BlogSavedSearch
  • CheckoutSavedSearch
  • CollectionSavedSearch
  • CommentSavedSearch
  • DiscountCodeSavedSearch
  • DraftOrderSavedSearch
  • FileSavedSearch
  • GiftCardSavedSearch
  • InventoryTransferSavedSearch
  • MetaTagsController
  • OrderSavedSearch
  • PageSavedSearch
  • PriceRuleSavedSearch
  • ProductSavedSearch
  • ProductVariantSavedSearch
  • RedirectSavedSearch
  • TransferSavedSearch

ページネーションされたリクエストを作成し、ページを繰り返し処理する

ページネーションされた結果をサポートするエンドポイントにリクエストを送信する場合、limitパラメータを使用して、ページごとに返す結果の数を設定できます。limitを指定しない場合、エンドポイントはデフォルトのページの制限を使用します。このリクエストで他のパラメータを設定して、結果を絞り込むこともできます。

次のリクエストの例では、1ページあたり3商品というlimitのもと、コレクションに属するすべての商品を商品エンドポイントに要求します。

Request

GET https://{shop}.myshopify.com/admin/api/2019-07/products.json?limit=3&collection_id=841564295

Response header

#...
Link: "<https://{shop}.myshopify.com/admin/api/2019-07/products.json?page_info=hijgklmn&limit=3>; rel=next"
#...

Response body

{
  "products": [
    {id: 1 ... },
    {id: 2 ... },
    {id: 3 ... }
  ],
}

Response header は、次のページの URL を含むリンクヘッダーの結果を返します。Response body は、3 つの製品を含む最初のページの結果を返します。

次のページの結果を取得するには、最後のレスポンスのリンクヘッダーに保存されている URL にリクエストを送信します。

Request

GET https://{shop}.myshopify.com/admin/api/2019-07/products.json?page_info=hijgklmn&limit=3

Response header

#...
Link: "<https://{shop}.myshopify.com/admin/api/2019-07/products.json?page_info=abcdefg&limit=3>; rel=previous, <https://{shop}.myshopify.com/admin/api/2019-07/products.json?page_info=opqrstu&limit=3>; rel=next"
#...

Response body

{
  "products": [
    {id: 4 ... },
    {id: 5 ... },
    {id: 6 ... }
  ],
}

Response header には、前のページの結果へのリンクと次のページへのリンクが含まれています。Response body には、2 ページ目の結果が含まれ、最初のページの次の 3 つの製品が含まれます。

リンクヘッダーの URL を使用して、結果の各ページを反復処理できます。ページを呼び出し、Response header に前のページへのリンクのみが含まれている場合は、結果の最後のページに到達しています。

特定のページの結果の数を変更する

リンクヘッダーの URL のlimitを変更して、指定したポイントから異なる数の結果を返すことができます。たとえば、次のリクエスト例では、limitパラメータ 3 を使用して、すべての製品の製品エンドポイントを要求しています。

Request

GET https://{shop}.myshopify.com/admin/api/2019-07/products.json?limit=3

Response header

{
  "products": [
    {id: 1 ... },
    {id: 2 ... },
    {id: 3 ... }
  ],
}

Response body

#...
Link: "<https://{shop}.myshopify.com/admin/api/2019-07/products.json?page_info=hijgklmn&limit=3>; rel=next"
#...

リンクヘッダーの URL のlimitを 6 に変更し、その URL にリクエストを送信すると、Response body は最初のページの結果の後に 6 つの製品を返します。

Request

GET https://{shop}.myshopify.com/admin/api/2019-07/products.json?page_info=hijgklmn&limit=6

Response header

2Link: "<https://{shop}.myshopify.com/admin/api/2019-07/products.json?page_info=vwxyzab&limit=6>; rel=next"

Response body

{
  "products": [
    {id: 4 ... },
    {id: 5 ... },
    {id: 6 ... },
    {id: 7 ... },
    {id: 8 ... },
    {id: 9 ... }
  ],
}

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

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