èæ¯
GitHub GraphQL API ã¯ãçŸåšã2 çš®é¡ã®ã°ããŒãã« ããŒã ID 圢åŒããµããŒãããŠããŸãã ã¬ã¬ã·åœ¢åŒã¯ çµäº ã«ãªããæ°ãã圢åŒã«çœ®ãæããããŸãã ãã®ã¬ã€ãã¯ãå¿ èŠãªå Žåã®æ°ãã©ãŒããããžã®ç§»è¡æ¹æ³ã玹ä»ããŸãã
æ°ãããã©ãŒãããã«ç§»è¡ããããšã§ããªã¯ãšã¹ãã«å¯Ÿããã¬ã¹ãã³ã¹ã¿ã€ã ãäžè²«ããŠå°ãããªãããšãä¿èšŒã§ããŸãã ãŸããã¬ã¬ã· ID ã çµäº ã«ãªã£ãããã¢ããªã±ãŒã·ã§ã³ãåŒãç¶ãåäœããããã«ããŸãã
ã¬ã¬ã· ã°ããŒãã« ããŒã ID 圢åŒã çµäº ã«ãªãçç±ã®è©³çްã«ã€ããŠã¯ããGraphQL ã«æ°ããã°ããŒãã« ID 圢åŒãç»å Žããåç §ããŠãã ããã
察å¿ã®å¿ èŠæ§ã®å€æ
GraphQLã°ããŒãã«ããŒãIDãžã®åç
§ãä¿åããŠããå Žåã«ã®ã¿ãç§»è¡ã®ã¹ããããèžãã§ãããªããã°ãªããŸããã ãããã® ID ã¯ãã¹ããŒãå
ã®ä»»æã®ãªããžã§ã¯ãã® id
ãã£ãŒã«ãã«å¯Ÿå¿ããŸãã ã°ããŒãã«ããŒãIDããŸã£ããä¿åããŠããªããªãã倿Žãªãã«APIãæ±ãç¶ããããŸãã
ããã«ãçŸåšãã¬ã¬ã· ID ããã³ãŒãããŠåæ
å ±ãæœåºããå Žå (ããšãã°ããªããžã§ã¯ãã pull request ã§ãããã©ããã倿ããããã« PR_kwDOAHz1OX4uYAah
ã®æåã® 2 æåã䜿çšããå Žå)ãID ã®åœ¢åŒã倿ŽãããããããµãŒãã¹ã¯äžæãããŸãã ãããã®IDãäžéæãªæååãšããŠæ±ãããããµãŒãã¹ãç§»è¡ããªããã°ãªããŸããã ãããã®IDã¯äžæã«ãªãã®ã§ãçŽæ¥åç
§ãšããŠäŸåã§ããŸãã
æ°ããã°ããŒãã«IDãžã®ç§»è¡
æ°ãã ID 圢åŒãžã®ç§»è¡ãæ¯æŽããããã«ãGraphQL API èŠæ±ã§ X-Github-Next-Global-ID
ããããŒã䜿çšã§ããŸãã X-Github-Next-Global-ID
ããããŒã®å€ã¯ã1
ãŸã㯠0
ã«ã§ããŸãã å€ã 1
ã«èšå®ãããšãid
ãã£ãŒã«ããèŠæ±ãããªããžã§ã¯ãã«å¯ŸããŠãåžžã«æ°ãã ID 圢åŒã䜿çšãããããã«å¿çãã€ããŒãã匷å¶ãããŸãã å€ã 0
èšå®ãããšãæ¢å®ã®åäœã«æ»ããŸãããã®å Žåããªããžã§ã¯ãã®äœææ¥ã«å¿ããŠã¬ã¬ã· ID ãŸãã¯æ°ãã ID ã衚瀺ãããŸãã
curl
ã³ãã³ãã䜿ã£ãèŠæ±ã®äŸã次ã«ç€ºããŸãã
$ curl \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-H "X-Github-Next-Global-ID: 1" \
https://api.github.com/graphql \
-d '{ "query": "{ node(id: \"MDQ6VXNlcjM0MDczMDM=\") { id } }" }'
ã¯ãšãªã§ã¬ã¬ã· ID MDQ6VXNlcjM0MDczMDM=
ã䜿çšãããå Žåã§ããå¿çã«ã¯æ°ãã ID 圢åŒãå«ãŸããŸãã
{"data":{"node":{"id":"U_kgDOADP9xw"}}}
X-Github-Next-Global-ID
ããããŒã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ã§åç
§ããã¬ã¬ã· ID ã®æ°ãã ID 圢åŒã確èªã§ããŸãã ã¬ã¹ãã³ã¹ã§åä¿¡ãããIDã§ããããã®åç
§ãæŽæ°ã§ããŸãã æ§æ¥ã®idãžã®åç
§ããã¹ãп޿°ããç§»è¡ã®APIãžã®ãªã¯ãšã¹ãã§ã¯æ°ããIDãã©ãŒãããã䜿ããªããã°ãªããŸããã
ãã«ã¯æäœãè¡ãéã«ã¯ã1ã€ã®APIã³ãŒã«ã§è€æ°ããŒãã®ã¯ãšãªããµããããããããã«ããšã€ãªã¢ã¹ãå©çšã§ããŸãã 詳现ã«ã€ããŠã¯ãGraphQL ããã¥ã¡ã³ããåç
§ããŠãã ããã
ã¢ã€ãã ã®ã³ã¬ã¯ã·ã§ã³ã«å¯ŸããŠæ°ããIDãååŸããããšãã§ããŸãã ããšãã°ãOrganizationäžã®æåŸã®10åã®ãªããžããªã®æ°ããIDãååŸãããå Žåã¯ã以äžã®ãããªã¯ãšãªã䜿ãããšãã§ããŸãã
{
organization(login: "github") {
repositories(last: 10) {
edges {
cursor
node {
name
id
}
}
}
}
}
X-Github-Next-Global-ID
ã 1
ã«èšå®ãããšãã¯ãšãªå
ã®ãã¹ãŠã® id
ãã£ãŒã«ãã®æ»ãå€ã«åœ±é¿ããããšã«æ³šæããŠãã ããã ã€ãŸããnode
以å€ã®ã¯ãšãªãéä¿¡ããå Žåã§ããid
ãã£ãŒã«ããèŠæ±ããå Žåã¯æ°ãã圢åŒã® ID ãè¿ãããŸãã
ãã£ãŒãããã¯ãéã
ã¢ããªã«åœ±é¿ãäžãããã®å€æŽã®ããŒã«ã¢ãŠãã«é¢ããæžå¿µãããå Žåã¯ãGitHub ãµããŒã ããŒã¿ã« ã«ãåãåããããã ããã¢ããªåãªã©ã®æ å ±ãæäŸããŠããã ããã°ãããè¯ããµããŒããæäŸã§ããŸãã