GraphQLでユーザーにクエリ

このページでは、GraphiQLエクスプローラーを使用してユーザーにクエリを実行する方法について説明します。

同じクエリを HTTP エンドポイント経由で直接実行するには、cURL を使用します。詳細については、コマンドラインから始めるためのガイダンスを参照してください。

例のユーザークエリは、GitLab インスタンスのユーザーのサブセットをユーザー名かグローバル ID で探します。クエリには以下のものが含まれます:

pageInfo

ページネーションの実装に必要なデータがコンテナに含まれています。GitLab はカーソルベースのページ分割を使います。詳細については、GraphQL ドキュメントのPaginationを参照ください。

nodes

GraphQL クエリでは、nodes はグラフ](https://en.wikipedia.org/wiki/Vertex_(graph_theory))上の[nodes のコレクションを表すために使用されます。この場合、ノードのコレクションはUser オブジェクトのコレクションです。それぞれについて、出力します:

  • そのユーザーのid
  • membership フラグメント。そのユーザーが属するプロジェクトやグループのメンバーシップを表します。フラグメントの出力は、...memberships 記法で表します。

GitLab GraphQL APIは広範囲に渡っており、様々なエンティティの大量のデータを出力することができます。最新の情報については、公式のリファレンスドキュメントを参照してください。

GraphiQLエクスプローラの設定

この手順では、GraphiQLエクスプローラーにコピー&ペーストできる実質的な例を示します。GraphiQLエクスプローラーは以下の用途に使用できます:

  1. 以下のコードをコピーしてください:

     {
       users(usernames: ["user1", "user3", "user4"]) {
         pageInfo {
           endCursor
           startCursor
           hasNextPage
         }
         nodes {
           id
           username,
           publicEmail
           location
           webUrl
           userPermissions {
             createSnippet
           }
         }
       }
     }
    
  2. GraphiQLエクスプローラーツールを開きます。
  3. GraphiQL エクスプローラー ツールの左ウィンドウに上記のquery を貼り付けます。
  4. 再生」を選択すると、このような結果が得られます:

GraphiQL explorer search for boards

note
GraphQL APIは標準のIDではなくGlobalIDを返します。また、単一の整数ではなくGlobalIDを入力として期待します。

この GraphQL クエリは、リストされたユーザー名を持つ 3 人のユーザーの指定された情報を返します。GraphiQL エクスプローラーはセッション トークンを使用してリソースへのアクセスを作成するため、出力は現在認証されているユーザーがアクセス可能なプロジェクトとグループに限定されます。

インスタンス管理者としてサインインした場合は、所有者に関係なくすべてのレコードにアクセスできます。

管理者としてサインインしている場合、admins: true パラメータをクエリに追加し、2 行目を次のように変更することで、インスタンスの一致する管理者だけを表示できます:

  users(usernames: ["user1", "user3", "user4"], admins: true) {
    ...
  }

または、すべての管理者を取得することもできます:

  users(admins: true) {
    ...
  }

詳細については