REST API

์น์Šคยท2022๋…„ 11์›” 24์ผ
0

iOS์—์„œ์˜ ๋„คํŠธ์›Œํ‚น

๋ชฉ๋ก ๋ณด๊ธฐ
3/3

REST(REpresentational State Transfer)์™€ API(Application Programming Interface)

๐Ÿ“Œ REST(REpresentational State Transfer)

  • REST๋Š” HTTP ๊ธฐ๋ฐ˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.

  • REST๋Š” "REpresentational(ํ‘œํ˜„๋œ) State(์ž์›/๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ)๋ฅผ Transfer(์ „๋‹ฌ)"์˜ ์•ฝ์ž๋กœ ์ž์›/๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ˆˆ์— ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ‘œํ˜„ํ•˜๊ณ , ํ‘œํ˜„ํ•œ ์ž์›/๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    (์š”์ฒญ์˜ ์ƒํƒœ๋งŒ์œผ๋กœ ํ•ด๋‹น ์š”์ฒญ์ด ๋ฌด์Šจ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ธ์ง€ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ)

๐Ÿ“Œ API(Application Programming Interface)

  • ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ์†Œํ”„ํŠธ์›จ์–ด๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ผ์ข…์˜ ์š”์ฒญ๋ฐฉ์‹์„ API๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

  • API์˜ ์š”์ฒญ ๋ฐฉ์‹์€ ์ง€์ •๋œ ๊ทœ์น™ ๋ฐ ์•ฝ์†์ด ์žˆ์Šต๋‹ˆ๋‹ค.

REST API

  • REST์˜ ํŠน์ง•์„ ๊ธฐ๋ฐ˜์œผ๋กœ API๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ REST API๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

  • REST API๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ์š”์ฒญ์ด ์–ด๋– ํ•œ ๋™์ž‘์ธ์ง€, ์–ด๋– ํ•œ ์ •๋ณด๋ฅผ ์›ํ•˜๋Š” ๊ฒƒ์ธ์ง€ ํ•ด๋‹น ์š”์ฒญ์˜ ๋ชจ์Šต๋งŒ์œผ๋กœ๋„ ์ถ”๋ก ์ด ๊ฐ€๋Šฅํ•œ ์š”์ฒญ ๋ฐฉ์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

RESTful API

RESTful API๋Š” REST ์„ค๊ณ„์ง€์นจ์— ๋‚˜์˜จ 6๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋ชจ๋‘ ์ถฉ์กฑํ•˜์—ฌ ์„ค๊ณ„๋œ API๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ REST์˜ ์„ค๊ณ„์ง€์นจ 6๊ฐ€์ง€

  1. Client-Server
  2. Stateless
  3. Cacheable
  4. โญ๏ธUniform Interface(๊นŒ๋‹ค๋กœ์šด ์กฐ๊ฑด)
  5. Layered System
  6. Code On Demand

๐Ÿ“Œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ผ๊ด€์„ฑ(Uniform Interface)

1. ์ž์›์˜ ์‹๋ณ„(identification of resources)
์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ์‹๋ณ„์ž๋ฅผ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ์ž์›์„ URI๋กœ ์‹๋ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2. ํ‘œํ˜„์„ ํ†ตํ•œ ์ž์›์˜ ์กฐ์ž‘(manipulation of resources through representations)
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž์›์„ ์š”์ฒญํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์š”์ฒญํ•œ ์ž์›์„ ํ‘œํ˜„ํ•˜์—ฌ ์‘๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
(์ž์›์˜ ํ‘œํ˜„์€ ๋ฌธ์„œ, ํŒŒ์ผ, XML, JSON ๋“ฑ ์ด ์ด์Šต๋‹ˆ๋‹ค.)

3. ์ž๊ธฐ ์„œ์ˆ ์  ๋ฉ”์‹œ์ง€(self-descriptive messages)
ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์— ์˜ค๊ฐ€๋Š” ์š”์ฒญ/์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ์Šค์Šค๋กœ ์ปดํ“จํ„ฐ(์Šค๋งˆํŠธํฐ)์—๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ถฉ๋ถ„ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

4. HATEOAS(Hypermedia As The Engine Of Application State)
ํ•˜์ดํผ๋””๋ฏธ์–ด(๋งํฌ)๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ํ•˜์ดํผ๋””๋ฏธ์–ด(๋งํฌ)์—๋Š” ๊ทธ์— ๋งž๋Š” ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ŒREST์˜ ์„ค๊ณ„์ง€์นจ์„ ๋ชจ๋‘ ๋”ฐ๋ผ์•ผํ• ๊นŒ??

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด ๋ชจ๋‘ ๋”ฐ๋ฅผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

  • ์ƒํ™ฉ๊ณผ ์กฐ๊ฑด์— ๋”ฐ๋ผ RESTfulํ•œ ๋ฐฉ์‹์˜ API ์„ค๊ณ„/๊ฐœ๋ฐœ์ด ์˜คํžˆ๋ ค ๋น„ํšจ์œจ์ (๊ตฌ์กฐ์  ๋˜๋Š” ์‹œ๊ฐ„์ , ๋น„์šฉ์ ์œผ๋กœ ๋น„ํšจ์œจ)์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  • REST์˜ ์„ค๊ณ„์ง€์นจ ์ค‘์—์„œ Uniform Interface(ํŠนํžˆ self-descriptive, HATEOAS)์˜ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ REST API๋Š” RESTfulํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
profile
์‘์•  ๋‚˜ ์ฝ”๋ฆฐ์ด(๋น„ํŠธ์ฝ”์ธX ์ฝ”๋”ฉO)

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