๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Back-end

[REST API]REST API๋ž€?

๋ฐ˜์‘ํ˜•

API๋ž€?

Application Programming Interface

API๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•œ ์ •์˜ ๋ฐ ํ”„๋กœํ† ์ฝœ ์„ธํŠธ์ด๋‹ค.
๋‚ด๋ถ€์˜ ๊ตฌํ˜„ ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๋“œ๋Ÿฌ๋‚ด์ง€์•Š๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋…ธ์ถœํ•ด์ฃผ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ตฌํ˜„ ๋ฐฉ์‹์„ ์•Œ์ง€ ๋ชปํ•ด๋„ ์ œํ’ˆ ๋˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์„œ๋กœ ์ปค๋ฎคํ‹ฐ์ผ€์ด์…˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ๊ฐ„์†Œํ™”ํ•˜์—ฌ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

REST๋ž€?

Reqresentational State Transfer

REST๋Š” HTTP์—์„œ ํ•„์š”ํ•œ ์ž์›์— ์ ‘๊ทผํ•  ๋•Œ ์›น์˜ ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜์ด๋‹ค.

REST ์•„ํ‚คํ…์ฒ˜์— ์ ์šฉ๋˜๋Š” ๊ฐ€์ง€ ์ œํ•œ ์กฐ๊ฑด

  1. ์ธํ„ฐํŽ˜์ด์Šค ์ผ๊ด€์„ฑ : ์ผ๊ด€์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค.
  2. ๋ฌด์ƒํƒœ : ๊ฐ ์š”์ฒญ ๊ฐ„ ํด๋ผ์ด์–ธํŠธ์˜ context, ์„ธ์…˜๊ณผ ๊ฐ™์€ ์ƒํƒœ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ์š”์ฒญ๋งˆ๋‹ค ๋ถ„๋ฆฌ๋˜์–ด์„œ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค.
  3. ์บ์‹œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ: ํด๋ผ์ด์–ธํŠธ๋Š” ์‘๋‹ต์„ ์บ์‹ฑํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์บ์‹œ๋ฅผ ํ†ตํ•ด ๋Œ€๋Ÿ‰์˜ ์š”์ฒญ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ๊ณ„์ธตํ™”: ํด๋ผ์ด์–ธํŠธ๋Š” ๋Œ€์ƒ ์„œ๋ฒ„์— ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š”์ง€, ์ค‘๊ฐ„ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด์„œ ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค. ์ค‘๊ฐ„ ์„œ๋ฒ„๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๊ธฐ๋Šฅ์ด๋‚˜ ๊ณต์œ  ์บ์‹œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์‹œ์Šคํ…œ ๊ทœ๋ชจ ํ™•์žฅ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ์œ ์šฉํ•˜๋‹ค.
  5. Code on demand(optional): ์ž๋ฐ” ์• ํ”Œ๋ฆฟ์ด๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ œ๊ณต์„ ํ†ตํ•ด ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋กœ์ง์„ ์ „์†กํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ํ™•์žฅ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  6. ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ๊ตฌ์กฐ: ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋‹จ์ˆœํ™”์‹œํ‚ค๊ณ  ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„์˜ ๊ฐ ํŒŒํŠธ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ  ์„œ๋กœ๊ฐ„์˜ ์˜์กด์„ฑ์„ ์ค„์ธ๋‹ค.

REST API์˜ ๊ตฌ์„ฑ์š”์†Œ

  1. HTTP Method
    • GET: ๋ฐ์ดํ„ฐ ์กฐํšŒ
    • POST: ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
    • PUT: ๋ฐ์ดํ„ฐ ์ „์ฒด ์ˆ˜์ •
    • PATCH: ๋ฐ์ดํ„ฐ ์ผ๋ถ€ ์ˆ˜์ •
    • DELETE: ์ •๋ณด ์‚ญ์ œ
  2. URL - ๋ฐ์ดํ„ฐ ์ ‘๊ทผ(๋ฐ์ดํ„ฐ๋งˆ๋‹ค ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ์˜ URL์ด ์กด์žฌํ•ด์•ผํ•œ๋‹ค.)
  3. Representation - ์ž์›์˜ ํ‘œํ˜„(URL๋งŒ์œผ๋กœ ์–ด๋–ค ์ž์›์„ ์ œ๊ณตํ•˜๋Š”์ง€ ํ‘œํ˜„ํ•ด์•ผํ•œ๋‹ค. ์ž˜ ๋งŒ๋“ค์–ด์ง„ API๋Š” URL๋งŒ ๋ณด๋”๋ผ๊ณ  API๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ๋Œ€์ถฉ ์•Œ ์ˆ˜ ์žˆ๋‹ค.)

REST API์˜ ์ž์› ํ‘œํ˜„์„ ์œ„ํ•œ URL ์„ค๊ณ„ ๊ทœ์น™(๊ถŒ์žฅ์‚ฌํ•ญ)

  1. ์†Œ๋ฌธ์ž๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.
  2. ์–ธ๋”๋ฐ”(_)๋Š” ์“ฐ์ง€ ์•Š๊ณ , ํ•„์š”์‹œ ํ•˜์ดํ”ˆ(-)์„ ์“ฐ๋˜ ์ง€์–‘ํ•œ๋‹ค.
  3. ํ™•์žฅ์ž๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค.
  4. ๋งˆ์ง€๋ง‰์— ์Šฌ๋ž˜์‹œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
  5. ํ–‰์œ„๋Š” ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
  6. ๊ฐ€๊ธ‰์  ์ „๋‹ฌํ•˜๊ณ ์žํ•˜๋Š” ์ž์›์˜ ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋˜, ์ปจํŠธ๋กค ์ž์›์„ ์˜๋ฏธํ•˜๋Š” ๊ฒฝ์šฐ ์˜ˆ์™ธ์ ์œผ๋กœ ๋™์‚ฌ๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค.

VS CODE์—์„œ REST API ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

VS CODE์—์„œ REST API๋ฅผ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ(REST Client)์ด ์žˆ๋‹ค๊ณ  ํ•ด์„œ googlebooksAPI๋ฅผ VS CODE์—์„œ ํ•œ๋ฒˆ ์‚ฌ์šฉํ•ด๋ณด์•˜๋‹ค.

  1. ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ REST Client๋ฅผ ์„ค์น˜ํ•œ๋‹ค.
  2. .http ํ™•์žฅ์ž๋กœ ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.
  3. ์›ํ•˜๋Š” ๋ฉ”์†Œ๋“œ์™€ URL์„ ์ž‘์„ฑํ›„ Send Request๋ฅผ ๋ˆ„๋ฅธ๋‹ค.(###์œผ๋กœ ๋‹ค๋ฅธ Request๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.)
  4. Response๋ฅผ ํ™•์ธํ•œ๋‹ค.

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

  1. ๋“œ๋ฆผ์ฝ”๋”ฉ by ์—˜๋ฆฌ API๋ž€? ๊ฐœ๋… ์ •๋ฆฌ์™€ ํฌํŠธํด๋ฆฌ์˜ค์— ์œ ์šฉํ•œ ๋Œ€๋ฐ• ์‚ฌ์ดํŠธ ๊ณต์œ  ๐Ÿ™Œ
  2. ํ‰ํ‰์ฝ”๋”ฉ TungTungCoding [API]3. REST API๊ฐœ๋…, ๊ตฌ์„ฑ์š”์†Œ, URL์„ค๊ณ„๊ทœ์น™, REST Client, API์‚ฌ์šฉ ์‹ค์Šต
  3. REST API์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ์ œํ•œ ์กฐ๊ฑด
๋ฐ˜์‘ํ˜•