- GraphQL API
プレビューAPIとデリバリーGraphQL APIの違い
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
プレビュー GraphQL APIとデリバリー GraphQL APIは同じ認証方法を使用し、同じクエリおよびレスポンス形状を共有していますが、両API間にはいくつかの違いがあります。このトピックでは、2つのAPIの違いについて説明します。
クエリ複雑性
クエリの複雑さはAPIごとに異なる計算方法で行われます。実際には、プレビュー GraphQL APIエンドポイントで実行されるクエリはDeliveryエンドポイントでも実行されるべきですが、クエリが大きいか深く入れ子状の場合は 両方のエンドポイントをテスト する必要があります。
スキーマとフィールドの違い
未公開コンテンツと公開コンテンツで利用可能なフィールドに違いがあるため、Experience Edgeで公開されているコンテンツを検索する際は、Experience Edgeスキーマドキュメントで説明されているフィールド を使用することを推奨します。さらに、追加したフィールドについては、標準テンプレートのフィールドを公開可能にしてください。
以下のスキーマの違いに注目してください:
- 現場の利用可能性は異なる場合があります:
- Preview - 公開されたコンテンツに存在しないフィールドを公開できる。
- Delivery - Experience Edgeスキーマに記載されたフィールドと、明示的に公開した標準テンプレートフィールドのみを公開します。
- _latestversionの検索フィールドは異なる挙動を示します:
- Preview - フィールドは最新の利用可能なバージョンを返し、 false がすべてのバージョンを返すことを可能にします。
- Delivery - フィールドは最新の公開可能なバージョンを返し、 trueのみを受け入れます。
- Searchオペレーターの挙動 はプレビューエンドポイントとデリバリーエンドポイント間で異なります。
スキーマ拡張
プレビュー GraphQL APIスキーマはデリバリー GraphQL APIのスキーマを反映しています。プレビュー GraphQL APIスキーマはExperience Edgeとの互換性を保つ必要があるため拡張できません。
キャッシュとレート制限
- Preview - プレビュー GraphQL APIを通じて提供されるコンテンツはキャッシュされていないため、繰り返しのロードに対して高速であることが期待されません。重負荷はSitecoreAIのインスタンス全体のパフォーマンスに影響を与える可能性があるため避けてください。
- Delivery - Delivery GraphQL APIを通じて提供されるコンテンツがキャッシュされているため、同一のクエリの方がより速く動作するはずです。APIは1秒あたり80リクエストに 制限 されています。
リンク
リンクは異なる場合があります。プレビューは作成コンテキスト(サイトの仮想フォルダやプレビューホスト名を含む)でリンクを解決し、Deliveryは公開コンテキスト(標準的なパブリックルート)でリンクを解決します。
リッチテキストのメディアリンク
-
Preview- XMC Hybrid Media項目のPrivate Linkフィールドを使用します。
!注XM Cloudは現在SitecoreAIです。エンジニアリング資産が更新されている間、一部のコード例、画像、UIラベルはXM Cloudを使用している場合があります。
-
Delivery - Public Linkフィールドを使う。
項目リンク LinkField
アイテムから特定のLinkFieldを読み込み、解決されたリンクURLを返すGraphQLクエリを考えてみましょう。
query GetLinkItemField($path: String, $language: String!, $name: String!) { item(path: $path, language: $language) { field(name: $name) { ... on LinkField { id value url } } } }
プレビューと配信でリンクURLがどのように解決されているかを比較してください:
-
Preview - リンクに仮想フォルダセグメントを含めることができます:
"url": "/da/<VIRTUAL_FOLDER>/ItemWithLinkFields/TestLinkFolder/TestItem?TestQueryStringDa#AnchorDa"
-
Delivery - リンクが仮想フォルダセグメントを含まず公開されたルートパスを使用している場合:
"url": "/da/ItemWithLinkFields/TestLinkFolder/TestItem?TestQueryStringDa#AnchorDa"
アイテムURL
ある項目のItem.urlオブジェクトを読み取るGraphQLクエリを考えます:
query GetItemUrl($path: String, $language: String!) { item(path: $path, language: $language) { id url { url path } } }
プレビューとデリバリーでurlとpathがどのように解決されているかを比較してください:
-
Preview - URLとパスがオーサリングホストおよび仮想フォルダを反映している:
"url": "https://<ENVIRONMENT_HOST_NAME>/da/<VIRTUAL_FOLDER>/ItemWithLinkFields/TestLinkFolder/TestItem", "path": "/da/<VIRTUAL_FOLDER>/ItemWithLinkFields/TestLinkFolder/TestItem"
-
Delivery - URLとパスは公開されたサイトのホストおよびルートを反映している:
"url": "https://<PUBLISHED_HOST>/da/ItemWithLinkFields/TestLinkFolder/TestItem", "path": "/da/ItemWithLinkFields/TestLinkFolder/TestItem"