【Shopify.dev和訳】API usage/Pagination/REST
この記事について
この記事は、API usage/Pagination/RESTの記事を和訳したものです。
記事内で使用する画像は、公式ドキュメント内の画像を引用して使用させていただいております。
Shopify アプリのご紹介
Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。
Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。
REST Admin API にページネーションされたリクエストを作成
REST エンドポイントは、カーソルベースのページネーションをサポートします。このガイドでは、REST Admin API からページネーションされたデータを要求し、結果の各ページにアクセスする方法について説明します。
使い方 | How it works
カーソルベースのページネーションをサポートする REST エンドポイントにリクエストを送信すると、レスポンスのボディは結果の最初のページを返し、レスポンスヘッダーは結果の次のページと前のページ(該当する場合)へのリンクを返します。応答ヘッダーのリンクを使用して、結果のページを反復処理できます。
リンクヘッダー | Link headers
リンクヘッダーは次の構文を使用します。
#...
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
パラメータを含むリクエストには、limit
とfields
(エンドポイントに適用される場合)以外の他のパラメータを含めることはできません。結果を他のパラメーターでフィルター処理する場合は、最初のリクエストにそれらのパラメーターを含める必要があります。
サポートされているエンドポイント | Supported endpoints
次のエンドポイントでカーソルベースのページネーションを使用できます。
2021 年 1 月リリース
2019 年 10 月リリース
- AbandonedCheckouts
- Articles
- Blog
- Comment
- Customer
- Customer (search)
- CustomCollection
- CustomerAddresses
- DiscountCodes
- Dispute
- DraftOrder
- Fulfillments
- GiftCards
- GiftCards (search)
- InventoryItems
- InventoryLevels
- LocationLevels
- MarketingEvents
- Orders
- OrderRisks
- Pages
- Payouts
- PriceRules
- ProductIds
- ProductVariants (index)
- Redirects
- Refunds
- Reports
- ScriptTags
- SmartCollections
- TenderTransactions
- Transactions
- Webhooks
2019 年 7 月リリース
- Collect
- CollectionListing
- Collection
- CustomerSavedSearch
- Event
- Metafield
- Product
- ProducListing
- ProductVariant
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 機能を実現することができます。
Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。
Discussion