๐Ÿ”Žย REST API

๊ฐ€์˜ค๋ฆฌยท2023๋…„ 2์›” 12์ผ
0

keyword

๋ชฉ๋ก ๋ณด๊ธฐ
3/6
post-thumbnail

REST API

  • REST ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค API๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ
  • OpenAPI. ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ๋“ฑ์„ ์ œ๊ณตํ•˜๋Š” ์—…์ฒด ๋Œ€๋ถ€๋ถ„์€ REST API๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
    • Open API
      • ๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณต๊ฐœ๋œ API ex ๊ตฌ๊ธ€ ๋งต, ๊ณต๊ณต ๋ฐ์ดํ„ฐ ๋“ฑ
    • ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค
      • ํ•˜๋‚˜์˜ ํฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ชผ๊ฐœ ๋ณ€๊ฒฝ๊ณผ ์กฐํ•ฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“  ์•„ํ‚คํ…์ฒ˜

REST API ํŠน์ง•

  1. ์‚ฌ๋‚ด ์‹œ์Šคํ…œ๋“ค๋„ REST ๊ธฐ๋ฐ˜์œผ๋กœ ์‹œ์Šคํ…œ์„ ๋ถ„์‚ฐํ•˜์—ฌ ํ™•์žฅ์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์—ฌ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  2. REST๋Š” HTTP ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.

    โ†’ HTTP๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  3. REST API๋ฅผ ์ œ์ž‘ํ•˜๋ฉด ์ž๋ฐ”, C#, ์›น ๋“ฑ์„ ์ด์šฉํ•ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

REST API ๊ธฐ๋ณธ ๊ทœ์น™

  1. URI๋Š” ์ •๋ณด์˜ ์ž์›์„ ํ‘œํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

  2. resource: ๋™์‚ฌ โ†’ ๋ช…์‚ฌ, ๋Œ€๋ฌธ์ž โ†’ ์†Œ๋ฌธ์ž

  3. resource: document ์ด๋ฆ„์€ ๋‹จ์ˆ˜ ๋ช…์‚ฌ

  4. resource: ์ปฌ๋ ‰์…˜ ์ด๋ฆ„์€ ๋ณต์ˆ˜ ๋ช…์‚ฌ

  5. resource: ์Šคํ† ์–ด ์ด๋ฆ„์€ ๋ณต์ˆ˜ ๋ช…์‚ฌ

  • ๋ฆฌ์†Œ์Šค ์›ํ˜•
    • ๋„ํ๋จผํŠธ : ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ ˆ์ฝ”๋“œ์™€ ์œ ์‚ฌํ•œ ๊ฐœ๋…
    • ์ปฌ๋ ‰์…˜ : ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ผ๋Š” ๋ฆฌ์†Œ์Šค
    • ์Šคํ† ์–ด : ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ฆฌ์†Œ์Šค ์ €์žฅ์†Œ
  1. ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„๋Š” HTTP Method๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
    1. URI์— HTTP Method๋Š” ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

    2. URI์— ํ–‰์œ„์— ๋Œ€ํ•œ ๋™์‚ฌ ํ‘œํ˜„์ด ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

      โ†’ CRUD ๊ธฐ๋Šฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œํ˜„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

    3. ๊ฒฝ๋กœ ๋ถ€๋ถ„ ์ค‘ ๋ณ€ํ•˜๋Š” ๋ถ€๋ถ„์€ ์œ ์ผ๊ฐ’์œผ๋กœ ๋Œ€์ฒดํ•œ๋‹ค.

      โ†’ id๋Š” ํ•˜๋‚˜์˜ ํŠน์ • resource๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ณ ์œ ๊ฐ’์ด๋‹ค.



REST API ์„ค๊ณ„ ๊ทœ์น™(URI)

  1. ์Šฌ๋ž˜์‹œ ๊ตฌ๋ถ„์ž๋Š” ๊ณ„์ธต ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  2. ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์—๋Š” ์Šฌ๋ž˜์‹œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
    1. URI์— ํฌํ•จ๋˜๋Š” ๋ชจ๋“  ๊ธ€์ž๋Š” ๋ฆฌ์†Œ์Šค์˜ ์œ ์ผํ•œ ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•˜๋ฉฐ URI๊ฐ€ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

      โ†’ ์—ญ์œผ๋กœ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‹ค๋ฅด๋ฉด URIใ„ท๋„ ๋‹ฌ๋ผ์ ธ์•ผ ํ•œ๋‹ค.

    2. REST API๋Š” ๋ถ„๋ช…ํ•œ URI๋ฅผ ๋งŒ๋“ค์–ด ํ†ต์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜ผ๋™์„ ์ฃผ์ง€ ์•Š๋„๋ก ๊ฒฝ๋กœ ๋งˆ์ง€๋ง‰์— ์Šฌ๋ž˜์‹œ๋ฅผ ๋„ฃ์ง€ ์•Š๋Š”๋‹ค.

  3. ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋Š”๋ฐ ํ•˜์ดํ”ˆ์„ ์‚ฌ์šฉํ•˜๊ณ  ๋ฐ‘์ค„์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
    1. ๊ธด URI ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ํ•˜์ดํ”ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ์˜ฌ๋ฆฐ๋‹ค.
    2. ๋ฐ‘์ค„์€ ๋ณด๊ธฐ ์–ด๋ ต๊ฑฐ๋‚˜ ๋ฐ‘์ค„ ๋•Œ๋ฌธ์— ๋ฌธ์ž๊ฐ€ ๊ฐ€์ ธ์ง€๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  4. ๊ฒฝ๋กœ์—๋Š” ์†Œ๋ฌธ์ž๊ฐ€ ์ ํ•ฉํ•˜๋‹ค.
    1. URI ๊ฒฝ๋กœ์— ๋Œ€๋ฌธ์ž ์‚ฌ์šฉ์€ ํ”ผํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค.
  5. ํŒŒ์ผ ํ™•์žฅ์ž๋Š” ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
    1. REST API์—์„œ๋Š” ๋ฉ”์‹œ์ง€ ๋ฐ”๋”” ๋‚ด์šฉ์˜ ํฌ๋งท์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ URI ์•ˆ์— ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค.
profile
๊ฐ€์˜ค๋ฆฌ์˜ ์ฝ”๋”ฉ์ผ๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€