---
schema_version: "1"
id: c168443136674b1bb96046bd018b8a6d7ade1f52eb6c5d26e96d3de303d92fe9
title: データソースへの GraphQL API のマッピング
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/apikit/latest/apikit-graphql-api-mapping.md
canonical_url: https://docs.mulesoft.com/jp/apikit/latest/apikit-graphql-api-mapping
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 3a423b5df30baed3993c07794fa32f9839eee793db029efc26911cd55de8834d
description: MuleSoft Documentation Site
release: 4.x
latest: true
---
# データソースへの GraphQL API のマッピング

## [](#ソースの選択)ソースの選択

モジュールソースは、GraphQL API の実装によって異なります。APIkit for GraphQL には 2 種類のソースがあります。

- データフェッチャー
- データローダー

どちらを選択するかは実装のニーズによって決まります。

GraphQL はトランスポートレイヤーに依存しないため、データの処理に使用するプロトコルに応じてメインコネクタリスナーを選択できます。

### [](#リスナーの追加)リスナーの追加

メインアプリケーションフローをトリガーするインバウンドエンドポイントは、使用するクライアントサーバープロトコルに固有のコネクタリスナーです。GraphQL は HTTP で通信を行うことが多いため、APIkit スキャフォルダーはデフォルトで HTTP リスナーを生成しますが、別のソースを選択して別のプロトコルでデータを転送することもできます。

### [](#データフェッチャーの追加)データフェッチャーの追加

データフェッチャーは、Mule フローのソースです。クエリ結果の単一オブジェクト項目のデータを供給します。データフェッチャーは、次のキーパートの組み合わせによって識別されます。

- **オブジェクト種別名**​: スキーマのいずれかのオブジェクト種別
- **項目名**​: そのオブジェクト種別に含まれるいずれかの項目の名前

項目の型が何であっても、スキーマで定義されているすべてのオブジェクト項目に対してデータフェッチャーを追加できます。Mule アプリケーションで項目に対してデータフェッチャーが設定されていない場合は、親型から項目値が供給されます。そうでない場合は、クライアントが要求したデータは提供されず、​`null`​ となります。

### [](#データローダーの追加)データローダーの追加

データフェッチャーと同じ用に、データローダーも Mule フローのソースです。データローダーは、オブジェクト種別に関連したバッチ要求を処理します。データフェッチャーとは異なり、一意のキー識別子によって識別されます。

- **オブジェクト種別名**​: スキーマのいずれかのオブジェクト種別

データローダーは、GraphQL API の実装時に N+1 件の要求の最適化の問題を解決します。この問題は、最初のクエリの実行時に取得できたはずのデータをフェッチするために N 件の追加クエリステートメントが実行された場合に発生します。

モジュールは、実行時にデータフェッチャーを先に探します。データフェッチャーが指定されていない場合は、データローダーを探します。同じオブジェクト種別に対してデータフェッチャーとデータローダーの両方が指定されている場合、モジュールは先にデータフェッチャーを使用して項目を解決します。このプロセスでは、データフェッチャーが N+1 回続けて呼び出されるため、API のパフォーマンスに影響します。

## [](#操作の選択)操作の選択

モジュールには、GraphQL API 実装の正常な設計と実行に不可欠な操作が用意されています。

- Route (ルート)
- Serialize (シリアル化)
- Serialize Batch (バッチシリアル化)

### [](#クエリのルーティング)クエリのルーティング

**Route (ルート)**​ 操作は、GraphQL サービスのエントリポイントです。この操作は、クエリを解析、検証してから、グラフをトラバースし、クエリ結果を得るために必要なデータフェッチャーとデータローダーをコールすることでクエリを実行します。

### [](#データフェッチャーのシリアル化)データフェッチャーのシリアル化

**Serialize (シリアル化)**​ 操作は、データフェッチャーソースが指定されているソースの最後に実行されます。この操作は、データフェッチャーの識別と同じキーペア (オブジェクト種別名と項目名) によって識別されます。

### [](#データローダーのバッチシリアル化)データローダーのバッチシリアル化

**Serialize Batch (バッチシリアル化)**​ 操作は、データローダーソースが指定されているソースの最後に実行されます。この操作は、データローダーの識別と同じキー (オブジェクト種別名) によって識別されます。

**Serialize (シリアル化)**​ 操作と ​**Serialize Batch (バッチシリアル化)**​ 操作は、設計時に DataSense を活用します。