Web APIs ๋””์ž์ธ ๐Ÿ’ฉ vs ๐Ÿ‘

Web APIs์˜ ๊ธฐ๋ณธ

๋Œ€๋ถ€๋ถ„ REST์˜ ํŠน์ง•์€ http ํ”„๋กœํ† ์ฝœ๊ณผ ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹๋งŒ ์ž˜ ๋”ฐ๋ผ๊ฐ€๋ฉด, ์•Œ์•„์„œ ๋”ฐ๋ผ์˜ค๋Š” ์ด์ ์ด ์žˆ๊ณ , hypermedia ํŠน์ง•์€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๊ณ  ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ณณ์€ ๋งŽ์ง€ ์•Š๋‹ค.

web API๋ฅผ ๋””์ž์ธํ• ๋•Œ๋Š” ์„œ๋ฒ„์— ์žˆ๋Š” ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฝ๊ฑฐ๋‚˜ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋™์ž‘์„ ์ง€์›ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. (CRUD)

์ด๋ฅผ HTTP ๋ฉ”์„œ๋“œ์™€ ๋น„์œ ํ•ด๋ณด๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค


์ฃผ์˜ํ•  ์‚ฌํ•ญ

  • API ์ด๋ฆ„์—๋Š” ์•ก์…˜(๋ฉ”์„œ๋“œ)์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์ƒ๋žตํ•ด์•ผํ•œ๋‹ค.
    • GET /posts/getPosts (๐Ÿšซ)
    • GET /posts (โœ…)
  • url ์ด๋ฆ„๊ณผ ์•ก์…˜(๋ฉ”์„œ๋“œ)๊ฐ€ ํด๋ฆฌ์–ด ํ•ด์•ผํ•œ๋‹ค.
    • GET /posts/createPost (GET ๋ฉ”์„œ๋“œ์ง€๋งŒ, ํฌ์ŠคํŒ…์„ ์ƒ์„ฑํ•จ / ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ url์— ์กด์žฌ)(๐Ÿšซ)
    • POST /posts (โœ…)
    • PUT /posts/1 (์•„์ด๋”” 1๋ฒˆ ๋ฆฌ์†Œ์Šค ์—…๋ฐ์ดํŠธ)(โœ…)
    • DELETE /posts/1 (1๋ฒˆ ๋ฆฌ์†Œ์Šค ์‚ญ์ œ)(โœ…)
  • ์š”์ฒญํ•˜๋Š” ๊ถ๊ทน์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ๋ช…ํ™•ํ•ด์•ผํ•œ๋‹ค.
    • GET /posts/1/tags (๐Ÿšซ)
    • GET /tags/?postId=1 (โœ…)
    • GET /tags/?query=cool (โœ…)

Youtube ์˜ API ์ฐธ๊ณ 

https://developers.google.com/youtube/v3/docs/videos/list

Youtube API๋ฅผ ํ™•์ธํ•˜๋ฉด, ๋ชจ๋“  ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ Hypermedia ๋งํฌ๊ฐ€ api ์‘๋‹ต์— ๋“ค์–ด๊ฐ€์žˆ์ง€์•Š์€ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. REST ํŠน์ง• ์ค‘ Hypermedia ๋ฃฐ์„ ๋”ฐ๋ฅด์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

REST API์˜ ์›์น™์„ ์ถฉ์‹คํžˆ ๋”ฐ๋ฅด๋Š” Github API

https://developer.github.com/v3/

์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  url์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์‘๋‹ต๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•ด์ค€๋‹ค. (REST Hypermedia ๋ฃฐ)