Contents

github api ์‚ฌ์šฉ๋ฐฉ๋ฒ•

github ์—์„œ๋Š” ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์˜ ์ „๋ฐ˜์ ์ธ ์ƒํ™ฉ์— ๋Œ€ํ•ด ๋‹ค์–‘ํ•œ API๋ฅผ ์ œ๊ณตํ•ด์ฃผ๊ณ  ์žˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ๊ทธ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค.

Personal access tokens ๋ฐœ๊ธ‰

์šฐ์„  ์ •์ƒ์ ์ธ API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Personal access tokens๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•„์•ผ ํ•œ๋‹ค. github ์ดˆ๊ธฐํ™”๋ฉด > ์šฐ์ธก์ƒ๋‹จ ํ”„๋กœํ•„์‚ฌ์ง„ ํด๋ฆญ > setting > Personal access tokens ์— ๋“ค์–ด๊ฐ€ ํ† ํฐ์„ ์ƒ์„ฑ์„ ํ•œ๋‹ค. ํ•ด๋‹น ํ† ํฐ์˜ ํ—ˆ์šฉ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•œ๋’ค ์ƒ์„ฑ์„ ํ•˜๋ฉด ๋งŒ๋“ค์–ด ์ง€๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ๋ฐœ๊ธ‰๋˜๋Š” ๋ฌธ์ž์—ด์€ ๋”ฐ๋กœ ๋ณด๊ด€ํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค. (๋‚˜์ค‘์— ๋‹ค์‹œ ํ™•์ธํ•˜๋ ค๋ฉด ์ƒˆ๋กœ ์žฌ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋ง๊ณ ๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ ๋งŒ๋“ค๋•Œ ๋ฉ”๋ชจํ•ด ๋‘๋Š”๊ฒŒ ์ข‹๋‹ค.) ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ์„ฑ์™„๋ฃŒ. /images/github-api/github_access_tokens.png

API ์‚ฌ์šฉ๋ฐฉ๋ฒ•

๊ถŒํ•œ์ด ์—†๋Š” Repository ์˜ ๋‚ด์šฉ์„ ํ™•์ธํ• ์ˆ˜ ์—†๋“ฏ์ด github์—์„œ ์ œ๊ณตํ•˜๋Š” API๋˜ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š” Repository์— ๋Œ€ํ•ด์„œ๋งŒ API๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์œ„์—์„œ ๋ฐœ๊ธ‰ํ•œ token ์„ ๊ถŒํ•œ ์ฒดํฌํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์„์ˆ˜ ์žˆ๊ฒ ์œผ๋‚˜ ๋‚˜๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ—ค๋”์— ํฌํ•จ์‹œ์ผœ์„œ ์ผ๋ฐ˜ GET ํ˜ธ์ถœ์„ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜์˜€๋‹ค. ์œˆ๋„์šฐ ํ™˜๊ฒฝ์—์„œ๋Š” ํ—ค๋” ์…‹ํŒ…ํ•˜๊ณ  ํ˜ธ์ถœํ•˜๋Š”๊ฒŒ ์กฐ๊ธˆ ์–ด๋ ค์šธ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์„ ์„ค์ •ํ• ์ˆ˜ ์žˆ๋Š” Postman์ด๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ํ˜ธ์ถœ์„ ํ•ด๋ณธ๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ url์€ https://api.github.com/์œผ๋กœ ์„ค์ •ํ•˜๊ณ  HeadersํŒŒ๋ผ๋ฏธํ„ฐ์— Authorization๋ผ๋Š” key์— value๋ฅผ ์œ„์—์„œ ๋ฐœ๊ธ‰๋ฐ›์•˜๋˜ token์„ ์ด์šฉํ•˜์—ฌ token abcd~~์‹์œผ๋กœ ์ž…๋ ฅํ•ด์ค€๋‹ค์Œ send๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ์‘๋‹ต์„ ๋ฐ›์„์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ, ์•„๋ž˜ ๊ทธ๋ฆผ์€ ์ œ๊ณตํ•˜๋Š” api์˜ ๋ชจ๋“  url์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

/images/github-api/github_api_call_1.png

์•„๋ž˜์• ์„œ๋Š” ์œ„์—์„œ ํ™•์ธ๋œ api url์„ ํ™œ์šฉํ•˜์—ฌ ๋‚ด๊ฐ€ ๊ถŒํ•œ์ด ์žˆ๋Š” ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ๋‚ด์—์„œ ํ™•์ธํ• ์ˆ˜์žˆ๋Š” ์ •๋ณด์— ๋Œ€ํ•œ API๋ฅผ ํ˜ธ์ถœํ•ด๋ณด์•˜๋‹ค.

/images/github-api/github_api_call_2.png

API ํ˜ธ์ถœ์‹œ ๊ฐ€์žฅ ๋ณดํŽธํ™”๋˜์–ด์žˆ๋Š”(?) ์ŠคํŒฉ์ธ JSON์œผ๋กœ ์‘๋‹ต์ด ๋‚ด๋ ค์˜ค๊ธฐ๋•Œ๋ฌธ์— ์–ด๋– ํ•œ ํ™˜๊ฒฝ์—์„œ๋„ ์ถฉ๋ถ„ํžˆ ํ™œ์šฉํ• ์ˆ˜ ์žˆ์„๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค. ๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ํŒ€ ๋‚ด์—์„œ ํ•˜๋‚˜์˜ Organizations๋‚ด์— ์—ฌ๋Ÿฌ Repository๊ฐ€ ์žˆ๋Š”๋ฐ ๊ฐ๊ฐ์˜ PullRequest์— ๋Œ€ํ•ด ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์ผ์ผํžˆ ๋‹ค ์ฐพ์•„๋ณด๊ธฐ ๊ท€์ฐฎ์•„ github-api๋ฅผ ํ™œ์šฉํ•ด open๋œ PullRequest๊ฐ€ ์žˆ์œผ๋ฉด ์•Œ๋ฆผ์„ ์ฃผ๋Š” ๊ฑธ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค.


Buy me a coffeeBuy me a coffee