variant idの取得について

解決済
観光客
10 1 3

・特定 vendor値のvariant id を取得したいです。
・無理ならばデータに入っている全てのvariant id を取得したいです。

https://kenkengems.myshopify.com/admin/variants.json?fields=sku,id&limit=250&page=2

上の情報ですが、ブラウザでは表示されますが、プログラム(PHP)からのアクセスでは情報が取得できないでおります。
file_get_contentes やcurlも試しましたが、取得できません。
PHPで取得できるサンプルコード等はありますでしょうか?


■特定のproduct IDからvariant id を取得するAPIがあるのは知っています。
vendor番号から商品IDを取得するAPIはありますでしょうか?

 

詳しい方教えてください。

0 件の「いいね!」
探検家
49 13 72

成功


https://kenkengems.myshopify.com/admin/variants.json?fields=sku,id&limit=250&page=2

上の情報ですが、ブラウザでは表示されますが、プログラム(PHP)からのアクセスでは情報が取得できないでおります。
file_get_contentes やcurlも試しましたが、取得できません。
PHPで取得できるサンプルコード等はありますでしょうか?

上記はAPIではなく、管理画面にログインしているブラウザでしか表示されないJSONのため、
外部サーバーから読み込むことは出来ません(セキュリティ突破すれば出来ますが危険です)。

 

 

/admin/api/2020-10/products.json?fields=vendor,variants

 

プライベートアプリからAPIキーとパスワード取得後、上記の「Product API」を使い、
vendorとvariantsに絞って取得してみてはどうでしょうか?

https://shopify.dev/docs/admin-api/rest/reference/products/product#index-2020-10

観光客
10 1 3

ありがとうございます!APIでフィールドが絞れることを知らなかったので目からうろこでした。

観光客
10 1 3

すみませんもう一つ壁に当たりまして、教えてください。

1ページは最大250データ取得可能のようですが、
全ページのデータを取得するには、下のようにsince_idを順番に変えて取得するしかないのでしょうか、
それとsince_idのidはproduct_id でしょうか、

/admin/api/2020-10/products.json?fields=vendor,variants?limit=250&since_id=******

 

よろしくお願いします。

0 件の「いいね!」
探検家
49 13 72

> ?fields=vendor,variants?limit=250&since_id=

まず「?」が2つありますのでこのURLは正しくありません。引数を繋ぐのは「&」になります。
エンドポイントの「since_id」ですがプロダクトIDではなくバリアントIDです。(A商品のSサイズで白色、等)
詳しくはヘルプをご覧ください。

https://shopify.dev/docs/admin-api/rest/reference/products/product-variant

スクリーンショット 2020-12-04 18.58.28.png

>1ページは最大250データ取得可能のようですが、

Shopifyに限らず一度に取得できる件数には制限があります。
次のページにデータがある場合は、
レスポンスヘッダ情報の中にある「rel="next"」からURLを取得し、再度リクエストすることで取得出来ます。

但し、プラン x APIの種類 で各々レート制限がありますので、
全てのデータを取得するためには、リクエスト毎にレスポンスヘッダを判別しながら、
レートを回避しながら次々とリクエストし続ける必要があります。
他にも色々な制限がありますが、詳しくはヘルプをご覧ください。

https://shopify.dev/concepts/about-apis/rate-limits

スクリーンショット 2020-12-04 18.52.05.png

観光客
10 1 3

ありがとうございます。本当に助かります。


rel_next.jpg

いただいた情報をもとに進めていて、添付は、レスポンスヘッダーですが、

[18]に、rel="next" があります。
次のページはこの長いURLという事でしょうか?

教えてください m(_ _)m

0 件の「いいね!」
探検家
49 13 72

はい、それです。