ããŒãªã³ã°ãåé¿ãã
API ã§ããŒã¿ãããŒãªã³ã°ãã代ããã«ãWebhook ã€ãã³ãããµãã¹ã¯ã©ã€ãããŠãã ããã ããã«ãããçµ±åã API ã¬ãŒãå¶éå ã«çãŸãã®ã«åœ¹ç«ã¡ãŸãã 詳ããã¯ããWebhook ããã¥ã¡ã³ãããã芧ãã ããã
èªèšŒæžã¿ã®ãªã¯ãšã¹ããåºããŸãã
èªèšŒãããèŠæ±ã®ãã©ã€ã㪠ã¬ãŒãå¶éã¯ãèªèšŒãããŠããªãèŠæ±ãããé«ããªããŸãã ã¬ãŒãå¶éãè¶ ããªãããã«ããã«ã¯ãèªèšŒæžã¿ã®èŠæ±ãè¡ãå¿ èŠããããŸãã 詳ããã¯ããREST API ã®ã¬ãŒãå¶éããã芧ãã ããã
åæã«ãªã¯ãŠã§ã¹ãããäºãé¿ããŠãã ããã
ã»ã«ã³ã㪠ã¬ãŒãå¶éãè¶ ããªãããã«ããã«ã¯ãåæã«èŠæ±ããã®ã§ã¯ãªããé æ¬¡èŠæ±ãè¡ãå¿ èŠããããŸãã ãããå®çŸããããã«ãèŠæ±ã®ãã¥ãŒ ã·ã¹ãã ãå®è£ ã§ããŸãã
倿ŽèŠæ±ã®éã§äžæåæ¢ãã
åäžã®ãŠãŒã¶ãŒãŸãã¯ã¯ã©ã€ã¢ã³ã ID ã§å€æ°ã® POST
ãPATCH
ãPUT
ãDELETE
èŠæ±ãè¡ãå Žåã¯ãåèŠæ±ã®éãå°ãªããšã 1 ç§ç©ºããŠãã ããã ããã¯ãã»ã«ã³ã㪠ã¬ãŒãå¶éãåé¿ããã®ã«åœ¹ç«ã¡ãŸãã
ã¬ãŒãå¶éãšã©ãŒãé©åã«åŠçãã
ã¬ãŒãå¶éãšã©ãŒãçºçããå Žåã¯ã次ã®ã¬ã€ãã©ã€ã³ã«åŸã£ãŠäžæçã«èŠæ±ã忢ããããšãå¿ èŠã§ãã
retry-after
å¿çããããŒãååšããå Žåã¯ããã®ç§æ°ãçµéãããŸã§èŠæ±ãå詊è¡ããªãã§ãã ãããx-ratelimit-remaining
ããããŒã0
ã®å Žåãx-ratelimit-reset
ããããŒã§æå®ãããæå» (UTC ãšããã¯ç§æ°)ãéãã ãŸã§èŠæ±ãå詊è¡ããªãã§ãã ãããx-ratelimit-reset
ããããŒã¯ UTC ãšããã¯ç§åäœã§ãã- ãã以å€ã®å Žåã¯ãå°ãªããšã 1 åéåŸ ã£ãŠããå詊è¡ããŸãã ã»ã«ã³ã㪠ã¬ãŒãå¶éã®èŠæ±ãç¶ç¶ããŠå€±æããå Žåã¯ãå詊è¡ã®éã«ææ°é¢æ°çã«å¢å ããæéãåŸ ã¡ãç¹å®ã®åæ°ã®å詊è¡ã®åŸã«ãšã©ãŒãã¹ããŒããŸãã
ã¬ãŒãå¶éäžã«èŠæ±ãç¶ãããšãçµ±åãçŠæ¢ããå¯èœæ§ããããŸãã
ãªãã€ã¬ã¯ããžã®è¿œåŸ
GitHub REST API ã§ã¯ãå¿ èŠã«å¿ã㊠HTTP ãªãã€ã¬ã¯ãã䜿ãããŸãã ã¯ã©ã€ã¢ã³ãã¯ãèŠæ±ããªãã€ã¬ã¯ããããå¯èœæ§ãããããšãæ³å®ããå¿ èŠããããŸãã HTTP ãªãã€ã¬ã¯ãã®åä¿¡ã¯ãšã©ãŒã§ã¯ãªããã¯ã©ã€ã¢ã³ãã¯ãã®ãªãã€ã¬ã¯ãã«åŸãå¿ èŠããããŸãã
301
ç¶æ
ã³ãŒãã¯ãæ°žç¶çãªãªãã€ã¬ã¯ãã瀺ããŠããŸãã ããããŒã§æå®ããã URL ã«èŠæ±ãç¹°ãè¿ã location
å¿
èŠããããŸãã ããã«ãä»åŸã®èŠæ±ã«ãã® URL ã䜿çšããããã«ã³ãŒããæŽæ°ããå¿
èŠããããŸãã
302
ãŸã㯠307
ç¶æ
ã³ãŒãã¯ãäžæçãªãªãã€ã¬ã¯ãã瀺ããŠããŸãã ããããŒã§æå®ããã URL ã«èŠæ±ãç¹°ãè¿ã location
å¿
èŠããããŸãã ãã ããä»åŸã®èŠæ±ã«ãã® URL ã䜿çšããããã«ã³ãŒããæŽæ°ããªãã§ãã ããã
ãã®ä»ã®ãªãã€ã¬ã¯ãã¹ããŒã¿ã¹ã³ãŒãã¯ãHTTP仿§ã«åŸã£ãŠäœ¿çšã§ããŸãã
URL ãæåã§è§£æããªã
å€ãã® API ãšã³ããã€ã³ãã¯ãå¿çæ¬æã®ãã£ãŒã«ãã® URL å€ãè¿ããŸãã ãããã® URL ãè§£æããããå°æ¥ã® URL ã®æ§é ãäºæž¬ãããããªãã§ãã ããã ããã«ãããGitHub ãå°æ¥ URL ã®æ§é ã倿Žãããšãçµ±åãäžæããå¯èœæ§ããããŸãã 代ããã«ãå¿
èŠãªæ
å ±ãå«ããã£ãŒã«ããæ¢ãå¿
èŠããããŸãã äŸãã°ãåé¡äœæã®ãšã³ããã€ã³ãã¯ãé¡äŒŒã®å€ãæã€html_url
ãã£ãŒã«ããšé¡äŒŒã®https://github.com/octocat/Hello-World/issues/1347
ãnumber
å€ãæã€1347
ãã£ãŒã«ããè¿ããŸãã åé¡ã®æ°ãææ¡ããå¿
èŠãããå Žåã¯ããã£ãŒã«ãã number
è§£æãã代ããã«ãã£ãŒã«ãã html_url
䜿çšããŸãã
åæ§ã«ãæ¹ããŒãžäœçœ®ã®ã¯ãšãªãæåã§äœæããªãã§ãã ããã 代ããã«ããªã³ã¯ ããããŒã䜿çšããŠãèŠæ±ã§ããçµæã®ããŒãžã決å®ããå¿ èŠããããŸãã 詳ããã¯ããREST API å ã§ã®æ¹ããŒãžäœçœ®ã®èªåä¿®æ£ã®äœ¿çšããã芧ãã ããã
å¿ èŠã«å¿ããŠæ¡ä»¶ä»ãèŠæ±ã䜿çšãã
ã»ãšãã©ã®ãšã³ããã€ã³ãã¯ããããŒã etag
è¿ããå€ãã®ãšã³ããã€ã³ãã¯ããããŒã last-modified
è¿ããŸãã ãããã®ããããŒã®å€ã䜿çšããŠãæ¡ä»¶ä»ã GET
èŠæ±ãè¡ãããšãã§ããŸãã å¿çã倿ŽãããŠããªãå Žåã¯ãå¿çã 304 Not Modified
åãåããŸãã Authorization
ããããŒã䜿ã£ãŠé©åã«èªå¯ãããç¶æ
ã§ 304
å¿çãè¿ãããå Žåãæ¡ä»¶ä»ãèŠæ±ãè¡ã£ãŠãããã©ã€ã㪠ã¬ãŒãå¶éã«ã¯ã«ãŠã³ããããŸããã
ããšãã°ãåã®èŠæ±ã§ããããŒå€ãè¿ããã etag
å Žåãå°æ¥ã® 644b5b0155e6404a9cc4bd9d8b1ae730
èŠæ±ã§ããããŒã if-none-match
䜿çšã§ããŸãã
curl -H "Authorization: Bearer YOUR-TOKEN" https://api.github.com/meta --include --header 'if-none-match: "644b5b0155e6404a9cc4bd9d8b1ae730"'
ããšãã°ãåã®èŠæ±ã§ããããŒå€ãè¿ãããlast-modified
å Žåãå°æ¥ã®Wed, 25 Oct 2023 19:17:59 GMT``if-modified-since
èŠæ±ã§ããããŒã䜿çšã§ããŸãã
curl -H "Authorization: Bearer YOUR-TOKEN" https://api.github.com/repos/github/docs --include --header 'if-modified-since: Wed, 25 Oct 2023 19:17:59 GMT'
POST
ãPUT
ãPATCH
ãDELETE
ãªã©ã®å®å
šã§ãªãã¡ãœããã®æ¡ä»¶ä»ãèŠæ±ã¯ãç¹å®ã®ãšã³ããã€ã³ãã«é¢ããããã¥ã¡ã³ãã«ç¹ã«èšèŒãããŠããªãéãããµããŒããããŸããã
ãšã©ãŒãç¡èŠããªã
ç¹°ãè¿ã 4xx
ã³ãŒããšãšã©ãŒ ã³ãŒã㯠5xx
ç¡èŠããªãã§ãã ããã 代ããã«ãAPI ãšæ£ãã察話ããŠããããšã確èªããå¿
èŠããããŸãã ããšãã°ããšã³ããã€ã³ããæååãèŠæ±ããŠããã®ã«æ°å€ãæž¡ããŠããå Žåã¯ã æ€èšŒãšã©ãŒãåãåããåŒã³åºãã¯æåããŸããã åæ§ã«ãèš±å¯ãããŠããªããšã³ããã€ã³ããŸãã¯ååšããªããšã³ããã€ã³ãã«ã¢ã¯ã»ã¹ããããšãããšã4xx
ãšã©ãŒãçºçããŸãã
ç¹°ãè¿ãçºçããæ€èšŒãšã©ãŒãæå³çã«ç¡èŠãããšãäžæ£å©çšã«ããã¢ããªã±ãŒã·ã§ã³ã忢ãããããšããããŸãã