Skip to main content

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2022-10-12. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise にアップグレードします。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせく� さい

グローバルノードIDの利用

REST APIを通じてオブジェクトのグローバルノードIDを取得し、それらをGraphQLの操作で利用できます。

GitHubのほとんどのオブジェクト(ユーザ、Issue、プルリクエストなど)には、REST APIを使っても、GraphQL APIを使ってもアクセスできます。 REST API 内から多くのオブジェクトの グローバル ノード ID を検索し、GraphQL 操作でこれらの ID を使えます。 詳しくは、「REST API リソースでの GraphQL API ノード ID のプレビュー」を参照してく� さい。

注: REST では、グローバル ノード ID フィールドに node_id という名前が付けられます。 GraphQL では、これは node インターフェイス上の id フィールドになります。 GraphQL での "ノード" の意味をもう一度確認するには、「GraphQL の概要」をご覧く� さい。

グローバルノードIDを利用する

グローバルノードIDを効率的に利用するには、以下の3つのステップを踏んでく� さい。

  1. オブジェクトの node_id を返す REST エンドポイントを呼び出します。
  2. GraphQLでのそのオブジェクトの型を見つけます。
  3. そのIDと型を使い、GraphQLでダイレクトにノードのルックアップを行います。

例を見ていきましょう。

1. オブジェクトのノード ID を返す REST エンドポイントを呼び出す

認証されたユーザーを要求する� �合:

$ curl -i -u username:token http(s)://HOSTNAME/api/v3/user

認証されたユーザーの node_id を含むレスポンスが返されます。

{ "login": "octocat", "id": 1, "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://api.github.com/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://api.github.com/users/octocat/followers", "following_url": "https://api.github.com/users/octocat/following{/other_user}", "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", "organizations_url": "https://api.github.com/users/octocat/orgs", "repos_url": "https://api.github.com/users/octocat/repos", "events_url": "https://api.github.com/users/octocat/events{/privacy}", "received_events_url": "https://api.github.com/users/octocat/received_events", "type": "User", "site_admin": false, "name": "monalisa octocat", "company": "GitHub", "blog": "https://github.com/blog", "location": "San Francisco", "email": "octocat@github.com", "hireable": false, "bio": "There once was...", "public_repos": 2, "public_gists": 1, "followers": 20, "following": 0, "created_at": "2008-01-14T04:33:35Z", "updated_at": "2008-01-14T04:33:35Z", "private_gists": 81, "total_private_repos": 100, "owned_private_repos": 100, "disk_usage": 10000, "collaborators": 8, "two_factor_authentication": true, "plan": { "name": "Medium", "space": 400, "private_repos": 20, "collaborators": 0 }, "node_id": "MDQ6VXNlcjU4MzIzMQ==" } 

2. GraphQL でのオブジェクトの種類を見つける

この例では、node_id 値は MDQ6VXNlcjU4MzIzMQ== です。 この値を使って、同じオブジェクトをGraphQLでクエリできます。

しかし、最初にオブジェクトの 種類 を把握する必要があります。 シンプルなGraphQLクエリで、この型を調べることができます。

query { node(id:"MDQ6VXNlcjU4MzIzMQ==") { __typename } } 

このクエリの種類—ノードを ID で見つける—は、"ダイレクト ノード ルックアップ" と呼ばれています。

このクエリを実行すると、__typenameUser になります。

3. GraphQL でダイレクト ノード ルックアップを行う

種類を確認したら、インライン フラグメントを使って、その ID によってオブジェクトにアクセスし、追� のデータを返すことができます。 この例では、こちらでクエリを実行する User のフィールドを定義しています。

query { node(id:"MDQ6VXNlcjU4MzIzMQ==") { ... on User { name login } } } 

この種のクエリは、オブジェクトをグローバルノードIDでルックアップする標準的なアプローチです。

移行におけるグローバルノードIDの利用

REST API または GraphQL API を使用するインテグレーションを構築する� �合、API バージョン間にわたってオブジェクトを簡単に参照できるように、グローバルノード ID を保持すると良いでしょう。 REST と GraphQL の間の移行処理について詳しくは、「REST から GraphQL への移行」をご覧く� さい。