GraphQL API フレームワークを使用したレコードデータのクエリ

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:6分
  • コンポーネントまたはサードパーティシステムからレコードデータをクエリするためのカスタム GraphQL API を作成します。

    たとえば、SLA に関連付けられたケースを表示するコンポーネントを作成できます。この ネクストエクスペリエンス UI フレームワーク を使用して必要なコンポーネントを開発し、ケーステーブルのデータを定義する GraphQL スキーマを作成することで、プラットフォームからケースデータにアクセスできます。

    コンポーネントの開発の詳細については、「 ワークスペースのコンポーネントの開発」を参照してください。

    GraphQL のメリット

    GraphQL は、クライアント側の開発用に最適化された Web クエリ言語です。スクリプト化された GraphQL を使用すると、次のことができます。

    • イントロスペクションを通じてクエリに使用できるフィールドとオブジェクトを検出します。
    • コンポーネントから必要な正確なデータをクエリします。
    • REST 要求に対して複数のエンドポイントを使用するのではなく、単一の API から考えられる複数のクエリを管理します。
    • スキーマを公開して、サードパーティシステムと統合します。
    • コンポーネントから GraphQL クエリを生成し、応答を処理します。

    使用前の注意事項

    カスタム GraphQL API の作成を開始する前に、次のことを確認してください。

    • スキーマを作成するための GraphQL ナレッジ。
    • API 動作を定義するための JavaScript の知識。
    • Web コンポーネントの概念に関する一般的な知識。
    • レコードデータを消費するカスタム ワークスペース コンポーネント。
    • スキーマで公開する ServiceNow データモデルについて理解する。
    • GlideRecord ナレッジを使用して、フィールドをリゾルバースクリプトのレコードデータにマッピングします。

    GraphQL の概要

    スクリプト化された GraphQL API の作成には、次の部分が含まれます。

    GraphQL スキーマ定義言語 (SDL)
    GraphQL クエリで使用できるフィールドの構造とデータ型を定義します。GraphQL スクリプトスキーマ [sys_graphql_schema] テーブルの スキーマ スクリプトフィールドを使用して、SDL を定義できます。SDL は、クエリ操作とミューテーション操作のみをサポートしています。
    リゾルバー
    各フィールドから返されるデータを定義します。[GraphQL スクリプトスキーマ] フォームの [GraphQL スクリプトリゾルバー] 関連リストで、各フィールドのリゾルバーを定義できます。
    タイプリゾルバー
    インターフェイスとユニオンを具体的な GraphQL タイプに解決します。たとえば、 インシデント タイプと 問題 タイプのユニオンを定義することができます。typeresolver スクリプトを使用して、いつどのものを返すかを定義します。[GraphQL スクリプトスキーマ] フォームの [GraphQL スクリプト型リゾルバー] 関連リストでタイプリゾルバーを定義できます。
    リゾルバーマッピング
    リゾルバーをスキーマ内のフィールドにマッピングします。リゾルバーマッピングは、[GraphQL スクリプトスキーマ] フォームの [GraphQL スクリプト化されたリゾルバーマッピング] 関連リストで定義できます。

    GraphQL クエリ言語の詳細については、 GraphQL の Web サイトを参照してください。

    GraphQL API へのクエリをテストするには、統合された GraphQL テストツールである GraphQL エクスプローラーを使用できます。詳細については、「GraphQL エクスプローラーで GraphQL API をテストする」を参照してください。

    制限事項

    次の GraphQL 機能はサポートされていません。

    • サブスクリプション操作
    • カスタムスカラータイプ

    イントロスペクション

    デフォルトでは、カスタムスキーマへのイントロスペクションクエリは有効になっていません。イントロスペクションをオンにするには、「 GraphQL スキーマのイントロスペクションクエリを有効にする」を参照してください。

    名前空間

    GraphQL API には、次の 2 つの異なる名前空間があります。

    アプリケーション名前空間
    カスタムアプリケーションの名前空間。アプリケーション名前空間の詳細については、「 アプリケーションスコープ」を参照してください。
    スキーマ名前空間
    すべてのクエリが一意であることを確認するためのスキーマの名前空間。1 つのアプリケーションに複数のスキーマ名前空間を含めることができます。

    データをクエリするときは、クエリに両方の名前空間を含める必要があります。たとえば、次のクエリは、次の名前空間を持つデータを検索しています。

    • アプリケーション名前空間: x_graph_scope
    • スキーマ名前空間: 惑星
    query {
      x_graph_scope {
        planet {
          findAll {
            name
            mass
            distance
          }
        }
      }
    }

    ディレクティブとグローバル関数

    @source スキーマディレクティブ

    GraphQL フィールドを親オブジェクトのプロパティ値にマッピングします。フィールドに個別のリゾルバースクリプトがある場合、システムは親オブジェクトの代わりにそのフィールドが解決されるレコードを使用します。

    スキーマスクリプトで @source ディレクティブを使用します。

    @defer クエリディレクティブ
    GraphQL フラグメントの処理をクエリの後半まで保留します。このクエリディレクティブを使用して、フラグメント内の応答が遅いフィールドのデータの返却を遅らせます。保留されたフラグメントのフィールド結果をマルチパート応答としてストリーミングします。
    注:
    @defer ディレクティブを使用するには、GraphQL クライアントがマルチパート/混合 HTTP ヘッダーを受け入れる必要があります。たとえば、HTTP ヘッダーを Accept: multipart/mixed; boundary="-" に設定します。

    @defer ディレクティブを使用して、ユーザーのインタラクション時間を短縮します。 このクエリディレクティブを無差別に適用すると、パフォーマンスが低下する可能性があるため、避けてください。パフォーマンステストを実施して、パフォーマンスを向上させるために保留できるフィールドを決定します。

    リゾルバー関数

    これらの関数は、グローバル env オブジェクトで使用できます。

    • getArguments():前のフィールドの引数を返します。
    • getSource():親オブジェクトを返します。

    リゾルバースクリプトで使用します。

    Typeresolver 関数

    これらの関数は、グローバル env オブジェクトで使用できます。

    • getArguments():前のフィールドの引数を返します。
    • getObject(): 親オブジェクトを返します。
    • getTypeName():インターフェイスまたは Union タイプの名前を返します。

    タイプリゾルバースクリプトで使用します。

    デモアプリケーション

    ミューテーションとクエリを含むデモ GraphQL PTO カレンダースキーマを表示するには、GraphQL フレームワークデモアプリケーションプラグイン (com.glide.graphql.framework.demo) を有効にします。