Skip to main content

グロヌバルノヌド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 --header "Authorization: Bearer YOUR-TOKEN" https://api.github.com/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 で芋぀ける—は、"ダむレクト ノヌド ルックアップ" ず呌ばれおいたす。

このク゚リを実行するず、__typename は User になりたす。

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

皮類を確認したら、むンラむン フラグメントを䜿っお、その ID によっおオブゞェクトにアクセスし、远加のデヌタを返すこずができたす。 この䟋では、こちらでク゚リを実行する User のフィヌルドを定矩しおいたす。

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

この皮のク゚リは、オブゞェクトをグロヌバルノヌドIDでルックアップする暙準的なアプロヌチです。

移行におけるグロヌバルノヌドIDの利甚

REST API たたは GraphQL API を䜿甚するむンテグレヌションを構築する堎合、API バヌゞョン間にわたっおオブゞェクトを簡単に参照できるように、グロヌバルノヌド ID を保持するず良いでしょう。 REST ず GraphQL の間の移行凊理の詳现に぀いおは、「RESTからGraphQLぞの移行」を参照しおください。