Seize your moment! ๐Ÿ‘พ

์•ˆ๋…•ํ•˜์„ธ์š”. Eric์ž…๋‹ˆ๋‹ค. ์ œ ๋ธ”๋กœ๊ทธ์— ๋ฐฉ๋ฌธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ป ๊ฐœ๋ฐœ๊ณต๋ถ€/Problem & Solution

[Eric's API] Github Organizations API ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๐Ÿ‘จ‍๐Ÿ’ป

Eric_ko 2023. 8. 12. 19:53

์–ผ๋งˆ์ „์˜ ๋‚˜๋Š”

Github ์˜ API๋ฅผ ํ†ตํ•ด์„œ 

ํ•ด๋‹นํ•˜๋Š” Github User์˜ Organizations ๋ฅผ ๊ฐ€์ ธ์˜ค๋ คํ•˜์˜€๋‹ค.

 

์ด๋•Œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ค‘ ๋‚˜๋Š” 2๊ฐ€์ง€ API๋ฅผ ํ†ตํ•ด์„œ 

User์˜ List organizations ๋ฅผ ํ•˜์˜€๋‹ค.

 

์ฒซ๋ฒˆ์งธ๋Š”

 

GET

/user/orgs

๋ฅผ ํ†ตํ•ด์„œ ๊ฐ€์ ธ์˜ค๋ ค ํ•˜์˜€๋‹ค.

https://docs.github.com/en/free-pro-team@latest/rest/orgs/orgs?apiVersion=2022-11-28#list-organizations

 

๋ฌธ์ œ์ ๐Ÿ˜ก

 

ํ•˜์ง€๋งŒ, ๋ถ„๋ช…ํžˆ ๋‚˜๋Š” ํ•˜๋‹จ์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ 2๊ฐœ์˜ ์กฐ์ง์„ ๊ฐ€์ง€๊ณ ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ ,

ํ•˜๋‹จ์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ Postman์œผ๋กœ header์— ์•Œ๋งž์€ token๊ณผ X-Github-Api-Version์„ 

์ž…๋ ฅํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  response๋กœ

empty array๊ฐ€ ๋‚˜์™”๋‹ค.

 

์›ƒ๊ธด๊ฑด status code๊ฐ€ 200 ๋ฒˆ์œผ๋กœ 

์ •์ƒ์ด๋ผ๋Š” ๊ฑฐ๋‹ค.

 


ํ•ด๊ฒฐ์ฑ…

 

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ด๋ฒˆ์—๋Š”

๋‹ค๋ฅธ API๋ฅผ ํ†ตํ•ด์„œ User์˜ List organizations ๋ฅผ ํ•˜์˜€๋‹ค.

์ด๋ฒˆ์— ์‚ฌ์šฉํ•œ API๋Š”

 

GET

/users/{username}/orgs

์ด๋ฉฐ, ํ•˜๋‹จ์˜ ๋ฐฉ์‹์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ฒŒ ์‹œ๋„ํ•˜์˜€๋”๋‹ˆ,

https://docs.github.com/en/free-pro-team@latest/rest/orgs/orgs?apiVersion=2022-11-28#list-organizations

 

์ด๋ฒˆ์—” Postman์—์„œ ๋‚˜์˜ List organizations ๋ฅผ response ํ•ด์ฃผ๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•ด๋‹น API๋Š”

{username}์‚ฌ์šฉ์ž์˜ ๊ณต๊ฐœ ์กฐ์ง๋งŒ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

ํ•ด๊ฒฐ์ฑ…

๊ทธ๋ž˜์„œ ์ฒ˜์Œ์— ์‹œ๋„ํ•˜์˜€๋˜

๋ฅผ ํ†ตํ•ด์„œ user์˜ List organizations ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด,

์ฒ˜์Œ์— ๋‚ด๊ฐ€ 3rd party ์ธ์ฆํ•˜๋Š” ๋ถ€๋ถ„์—

๋‚˜์˜ organizations ์ค‘์—์„œ ๊ฐ™์ด ์กฐํšŒ๊ฐ€ ๋˜๊ธฐ๋ฅผ 

์›ํ•˜๋Š” organization๋ฅผ ๋™์‹œ์— access๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค.

๋งŒ์•ฝ์— ์ด๋ฏธ ์ธ์ฆ์ด ์™„๋ฃŒ๋˜์–ด์„œ,

๊ธฐ์กด์˜ ์ธ์ฆ์„ ์ทจ์†Œํ•˜๊ณ  ๋‹ค์‹œ ๋“ฑ๋กํ•˜๊ณ ์‹ถ์œผ๋ฉด

 

ํ•˜๋‹จ์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ Github์— ๋“ค์–ด๊ฐ€์„œ,

ํ•ด๋‹น ์‚ฌ์ดํŠธ์˜ ์ธ์ฆ์„ ์ทจ์†Œ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ 

๋‹ค์‹œ ๋‚˜์˜ organization๋ฅผ ๋™์‹œ์— access๋ฅผ ํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐ์ด ๋œ๋‹ค.

์š”์•ฝ

 

๋‘ API ์—”๋“œํฌ์ธํŠธ๋Š” GitHub ์‚ฌ์šฉ์ž์˜ ์กฐ์ง(organization)์„ ๋‚˜์—ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์ง€๋งŒ, ์ฃผ์š” ์ฐจ์ด์ ์€ ์กฐํšŒ ๋Œ€์ƒ๊ณผ ๊ด€๋ จ์žˆ๋‹ค.

 

1. GET /user/orgs

   - ์ด API๋Š” ํ˜„์žฌ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์˜ ์กฐ์ง์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

   - ๋”ฐ๋ผ์„œ ์ด ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด OAuth ํ† ํฐ ๋˜๋Š” ๋‹ค๋ฅธ ์ธ์ฆ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์ธ์ฆ๋œ ์„ธ์…˜์—์„œ ์š”์ฒญ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

   - ์š”์ฒญํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์†ํ•œ ์กฐ์ง์˜ ๋ชฉ๋ก์„ ์–ป๊ธฐ ์œ„ํ•ด ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

2. GET /users/{username}/orgs

   - ์ด API๋Š” ์ง€์ •๋œ `{username}` ์‚ฌ์šฉ์ž์˜ ๊ณต๊ฐœ ์กฐ์ง์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

   - `{username}`์€ ์›ํ•˜๋Š” GitHub ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

   - ์ด ์—”๋“œํฌ์ธํŠธ๋Š” ํŠน์ • ์‚ฌ์šฉ์ž์˜ ๊ณต๊ฐœ ์กฐ์ง ์ •๋ณด์— ๋Œ€ํ•œ ์—ด๋žŒ์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์ด ํ•„์ˆ˜๋Š” ์•„๋‹ˆ์ง€๋งŒ, ์ธ์ฆ๋œ ์š”์ฒญ์—์„œ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋‘˜ ๋‹ค ์‚ฌ์šฉ์ž์˜ ์กฐ์ง์„ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ, ์ฒซ ๋ฒˆ์งธ๋Š” ํ˜„์žฌ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์— ๊ด€ํ•œ ๊ฒƒ์ด๊ณ , ๋‘ ๋ฒˆ์งธ๋Š” ํŠน์ • ์‚ฌ์šฉ์ž์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ ์ผ€์ด์Šค๋‚˜ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

์ฐธ๊ณ ์‚ฌ์ดํŠธ

https://docs.github.com/en/free-pro-team@latest/rest/orgs/orgs?apiVersion=2022-11-28#list-organizations 

 

Organizations - GitHub Docs

Status: 200 { "login": "github", "id": 1, "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=", "url": "https://api.github.com/orgs/github", "repos_url": "https://api.github.com/orgs/github/repos", "events_url": "https://api.github.com/orgs/github/events", "hooks_url": "

docs.github.com