---
title: "GraphQL API"
slug: "graphql-apis"
abstract: ""
---
# GraphQL API

[GraphQL](http://graphql.org/learn/)はAPI向けのクエリ言語で、開発を効率化し、特定のコンテンツを取得してどのチャネルにも届け、必要なコンテンツだけを取得できます。複数のデータソースを1つのクエリで組み合わせ、1つの応答で要求されたデータを受け取ることで効率が向上します。

Sitecore GraphQLはさまざまなAPIで利用可能です。データ構造、すなわちスキーマは実装ごとに固有のもので、例えばSitecore Content Hubはオーダーメイドのスキーマを使用します。以下の図に示すように、クライアントチャネルはGraphQLクエリを使って下部のデータソースからデータを要求します。

![GraphQL overview](https://doc.sitecore.com/api/markdown-image/ch/ja/developers/cloud-dev/images/graphql_overview.png)

GraphQLを使えば、[プレビュー API](https://doc.sitecore.com/ch/ja/developers/cloud-dev/preview-api.html "Preview API")や[デリバリー API](https://doc.sitecore.com/ch/ja/developers/cloud-dev/delivery-api.html "Delivery API")などの利用可能なAPIを使って[データをクエリ](https://doc.sitecore.com/ch/ja/developers/cloud-dev/graphql-queries.html "GraphQL queries")できます。Sitecoreは速度をGraphQL最適化し、複数のクエリを1つのHTTPリクエストでバッチ処理することでネットワークトラフィックを削減できます。

> !重要プレビューAPIおよびDelivery APIはミューテーションをサポートしていません。

GraphQLのエンドポイントはスキーマ(強型グラフ定義)をホストし、GraphQL言語を理解しています。REST APIとは異なり、正式なリクエストとレスポンス形式があります。各エンドポイントは独自の孤立した構成を持つため、信頼性を高めるために他のエンドポイント構成から分離できます。

> !注GraphQLクエリエディタはSitecore GraphQLエンドポイントに組み込まれており、クエリの作成(コード補完付き)やAPIドキュメントのレビューが可能です。GraphQLタイプシステムはSitecoreテンプレートを認識しているため、強い型付きクエリを実際のフィールドに対して作成・検証できます。テンプレートの変更はリアルタイムで更新され、GraphQL型にマッピングされます。

## GraphQLクエリの構造

[GraphQLクエリ](https://graphql.org/learn/queries/#queries-and-mutations) は、要求されたデータを表現するために特定の構造を使用します。各リクエストは、本文にクエリが含まれる標準的なPOSTリクエストです。GraphQLクエリの主な要素は以下の通りです:

-   *Field* - ターゲットデータ内の名前付きフィールド(例: total、 results、 id、など)。
-   *Argument* - 特定の場に関連する値(例: id\_eq: "Ai-JNhneM024pMItfBeYJQ)。
-   *Operation type* - 操作の種類(クエリ、ミューテーション、サブスクリプション)。
-   *Operation name* - 演算名(例: getContentInContentCollection)。
-   *Variable* - 操作に付随する動的パラメータ。

以下の例は、getContentInContentCollectionというクエリ操作を表しています。この例では、クエリはIDがAi-JNhneM024pMItfBeYJQのコンテンツコレクションを探し、id、contentCollectionName、、contentCollectionToContentオブジェクトの特定の内容を含む複数のフィールド値を取得します。

query getContentInContentCollection {
 m\_ContentCollection(id: "Ai-JNhneM024pMItfBeYJQ") {
 id
 contentCollectionName
 contentCollectionToContent {
 total
 results {
 content\_Name
 }
 }
 }
}

このクエリは以下の応答データを返しますが、これはクエリ自体と同じ全体の構造を持ちます。

{
 "data": {
 "allM\_ContentCollection": {
 "total": 1,
 "results": 
 {
 "id": "Ai-JNhneM024pMItfBeYJQ",
 "contentCollectionName": "Fruitful",
 "contentCollectionToContent": {
 "total": 4,
 "results": 
 {
 "content\_Name": "Healthy Mimosa blog",
 },
 {
 "content\_Name": "Healthful is the latest Flavorful Brand",
 },
 {
 "content\_Name": "Sparkling Punch using Fruitful Orange",
 },
 {
 "content\_Name": "Power comes from within",
 }
 
 }
 }
 
 }
 }
}