GraphQL API
はじめに
GitLab GraphQL APIを初めて使う方は、GitLab GraphQL APIを始めるをご覧ください。
クイックリファレンス
- GitLabのGraphQL APIエンドポイントは
/api/graphql
にあります。 - graphql.orgからGraphQLの入門書を入手してください。
- GitLabはGraphQL API Referenceに記載されている幅広いリソースをサポートしています。
グラフィカルキューエル
インタラクティブな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には、ルートレベルで以下のクエリが含まれています:
-
project
プロジェクト情報、イシューやマージリクエストなどの関連情報。 -
group
: 基本グループ情報とエピック は現在サポートされています。 -
user
特定のユーザーに関する情報 -
namespace
名前空間内部では、projects
を取得することも可能です。 -
currentUser
現在ログインしているユーザーの情報です。 -
users
ユーザーのコレクションに関する情報。 -
metaData
GitLabとGraphQL APIに関するメタデータ。 -
snippets
: 現在ログインしているユーザーに見えるスニペット。
新しいアソシエーションとルートレベルのオブジェクトは常に追加されています。 最新の情報については、GraphQL API Referenceを参照してください。
ルートレベルのクエリはapp/graphql/types/query_type.rb
で定義されています。
マルチプレックスクエリ
GitLabでは、apollo-link-batch-httpを使うことでクエリを一つのリクエストにまとめることができます。 マルチプレックスクエリについての詳細は、GitLabがバックエンドで使っているライブラリであるGraphQL Rubyにもあります。
参考
GitLabのGraphQLリファレンスがあります。
GitLabのGraphQLスキーマから自動的に生成され、Markdownファイルに埋め込まれます。
機械可読版もあります: