Skip to main content

Utilisation d’ID de nƓud globaux

Vous pouvez obtenir des ID de nƓud globaux d’objets via l’API REST et les utiliser dans les opĂ©rations GraphQL.

Vous pouvez accĂ©der Ă  la plupart des objets dans GitHub (utilisateurs, problĂšmes, demandes de tirage, etc.) Ă  l’aide de l’API REST ou de l’API GraphQL. Vous pouvez trouver l’ID de nƓud global de nombreux objets Ă  partir de l’API REST et utiliser ces ID dans vos opĂ©rations GraphQL. Pour plus d’informations, consultez Afficher un aperçu des ID de nƓud de l’API GraphQL dans les ressources de l’API REST.

Remarque

Dans REST, le champ ID de nƓud global est nommĂ© node_id. Dans GraphQL, il s’agit d’un champ id sur l’interface node. Pour un rappel de ce que signifie « nƓud Â» dans GraphQL, consultez PrĂ©sentation de GraphQL.

Placement des ID de nƓud globaux à utiliser

Vous pouvez suivre trois Ă©tapes pour utiliser efficacement les ID de nƓud globaux :

  1. Appelez un point de terminaison REST qui retourne l’objet node_id.
  2. Recherchez le type de l’objet dans GraphQL.
  3. Utilisez l’ID et le type pour effectuer une recherche de nƓud directe dans GraphQL.

Prenons un exemple.

1. Appeler un point de terminaison REST qui retourne l’ID de nƓud d’un objet

Si vous demandez l’utilisateur authentifiĂ© :

curl -i --header "Authorization: Bearer YOUR-TOKEN" https://api.github.com/user

Vous obtenez une rĂ©ponse qui inclut le node_id de l’utilisateur authentifiĂ© :

{
  "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. Rechercher le type d’objet dans GraphQL

Dans cet exemple, la valeur de node_id est MDQ6VXNlcjU4MzIzMQ==. Vous pouvez utiliser cette valeur pour interroger le mĂȘme objet dans GraphQL.

Vous devez d’abord connaĂźtre le type de l’objet, cependant. Vous pouvez vĂ©rifier le type avec une requĂȘte GraphQL simple :

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

Ce type de requĂȘte—la recherche du nƓud par ID—est appelĂ© « recherche de nƓud directe ».

Lorsque vous exĂ©cutez cette requĂȘte, vous verrez que l’objet __typename est User.

3. Effectuer une recherche de nƓud directe dans GraphQL

Une fois que vous avez confirmĂ© le type, vous pouvez utiliser un fragment inline pour accĂ©der Ă  l’objet par son ID et retourner des donnĂ©es supplĂ©mentaires. Dans cet exemple, nous dĂ©finissons les champs sur User que nous aimerions interroger :

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

Ce type de requĂȘte est l’approche standard pour rechercher un objet par son ID de nƓud global.

Utilisation des ID de nƓud globaux dans les migrations

Lors de la crĂ©ation d’intĂ©grations qui utilisent l’API REST ou l’API GraphQL, il est recommandĂ© de conserver l’ID de nƓud global afin de pouvoir facilement rĂ©fĂ©rencer des objets entre les versions de l’API. Pour plus d’informations sur la gestion de la transition entre REST et GraphQL, consultez Migration de REST vers GraphQL.