GraphQL API

はじめに

GitLab GraphQL APIを初めて使う方は、GitLab GraphQL APIを始めるをご覧ください。

クイックリファレンス

グラフィカルキューエル

インタラクティブなGraphiQLエクスプローラーを使用するか、https://<your-gitlab-site.com>/-/graphql-explorerの自己管理GitLabインスタンスでGraphQL APIを探索してください。

GraphiQLエクスプローラーの詳細については、GitLab GraphQLの概要を参照してください。

GraphQLとは何ですか?

GraphQLはAPI用のクエリ言語で、クライアントが必要なデータを正確にリクエストできるため、限られたリクエスト回数で必要なデータをすべて取得することが可能です。

GraphQLデータ(フィールド)は型の形式で記述できるため、クライアントはクライアント側のGraphQLライブラリを使用してAPIを利用し、手作業による解析を回避することができます。

固定されたエンドポイントやデータモデルがないため、変更を加えることなくAPIに新しい機能を追加することができます。 これにより、GraphQLのドキュメントで説明されているように、バージョンレスのAPIを持つことができます。

ビジョン

私たちはGraphQL APIをGitLabとプログラムでやりとりする主要な手段にしたいと考えています。 これを実現するためには、完全なカバレッジが必要です。REST APIで可能なことはすべてGraphQL APIでも可能でなければなりません。

このビジョンを達成するために、フロントエンドは新機能のためにREST APIよりもGraphQLを優先して使用する必要があります。

REST APIを廃止する予定はありません。 2つのAPIを並行してサポートする技術的負担を軽減するため、可能な限り実装を共有する必要があります。

利用可能なクエリー

GraphQL APIには、ルートレベルで以下のクエリが含まれています:

  1. project プロジェクト情報、イシューやマージリクエストなどの関連情報。
  2. group: 基本グループ情報とエピック は現在サポートされています。
  3. user 特定のユーザーに関する情報
  4. namespace 名前空間内部では、projectsを取得することも可能です。
  5. currentUser現在ログインしているユーザーの情報です。
  6. usersユーザーのコレクションに関する情報。
  7. metaDataGitLabとGraphQL APIに関するメタデータ。
  8. snippets: 現在ログインしているユーザーに見えるスニペット。

新しいアソシエーションとルートレベルのオブジェクトは常に追加されています。 最新の情報については、GraphQL API Referenceを参照してください。

ルートレベルのクエリはapp/graphql/types/query_type.rbで定義されています。

マルチプレックスクエリ

GitLabでは、apollo-link-batch-httpを使うことでクエリを一つのリクエストにまとめることができます。 マルチプレックスクエリについての詳細は、GitLabがバックエンドで使っているライブラリであるGraphQL Rubyにもあります。

参考

GitLabのGraphQLリファレンスがあります

GitLabのGraphQLスキーマから自動的に生成され、Markdownファイルに埋め込まれます。

機械可読版もあります: