私は 100 を超える製品のメタフィールドを取得しようとしてきました。つまり、製品ごとに個別に 100 の API 呼び出しを行う必要があります。バリアントを製品に添付する方法のように、すべての製品のすべてのメタフィールドを 1 つの xml ファイルで取得する方法がある場合。そのため、1 回の API 呼び出しで、製品ごとに 100 個の個別の API 呼び出しを行う代わりに、100 個の製品すべてを取得します。どんな助けでも大歓迎です。
2 に答える
ただし、API doc で言及されているとよいでしょう。何もない
すべてのメタフィールドのリストを受け取る GET /admin/metafields.json?since_id=721389482
ショップのメタフィールドのみを返すことを示します。
同じリクエストで複数のリソースのメタフィールドを取得するという多くのリクエストがありました。ただし、それらの多くは、リソースの ID とともに、アプリケーション側 (データベースなど) に情報を保持することで処理できます。このようにして、データは使用されている場所に近づきます。
メタフィールドを使用する正当な理由が 2 つあります。
- Liquid テンプレートから使用するメタデータの保存
- アプリケーション間の共有ストレージ
Liquid テンプレートのメタフィールドは、データがページのレンダリングに使用される場所に近いため、優れています。これにより、カスタム フィールドをアプリで提供し、ストアフロントでレンダリングできるため、レンダリングが高速になり、カスタマイズしやすくなります。
アプリケーション間の共有ストレージは、メタフィールドを使用するもう 1 つの正当な理由ですが、メタフィールドが使用される一般的な理由ではないようです。この場合、メタフィールド API には現在、複数のリソースのメタフィールドに一度にアクセスする方法がありません。
ただし、製品とともにメタデータを返すことは、あまり良い選択肢ではありません。これは、他のアプリケーションが、あなたのアプリケーションが気にしないメタフィールドにデータを保存する可能性があるためです。そのため、1 つのアプリケーションが、メタフィールドを使用していない他の多くのアプリケーションの速度を低下させる可能性があります。このため、メタフィールド API には、取得するメタフィールドを制限するクエリ パラメータがあり、他のアプリケーションのメタフィールドが不必要に返されることはありません。