๐ŸŒ [HTTP] API์˜ ์ข…๋ฅ˜

JiHun Songยท2022๋…„ 11์›” 11์ผ
0
post-thumbnail

API๋ž€?

Application Programming Interface์˜ ์•ฝ์ž์ด๋ฉฐ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋ผ๋ฆฌ์˜ ์†Œํ†ต์„ ๋งํ•œ๋‹ค.

HTTP API ๋ž€?

๋ง ๊ทธ๋Œ€๋กœ HTTP ํ†ต์‹  ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” API๋ฅผ ๋œป ํ•œ๋‹ค.

REST API ๋ž€?

Representational State Transfer์˜ ์•ฝ์ž๋กœ ๋„คํŠธ์›Œํฌ ์ž์›์„ ์ •์˜ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋œปํ•œ๋‹ค.

์ฆ‰, REST๋Š” HTTP๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์›์น™์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด ์›์น™์„ ์ค€์ˆ˜ํ•˜์—ฌ ๋งŒ๋“  API๊ฐ€ ๋ฐ”๋กœ REST API ์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ์›์น™๋“ค์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€ํ‚ค๋ฉด์„œ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์„ RESTful API๋ผ๊ณ  ํ•œ๋‹ค.

REST์˜ ์ œ์•ฝ ์กฐ๊ฑด

  • Client - Server : ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์„œ๋กœ ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • Stateless : ๋ฌด์ƒํƒœ์„ฑ์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์„œ๋ฒ„์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต๋งŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์˜ ์„ธ์…˜ ์ƒํƒœ ๋ฐ ์„ธ์…˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • Cacheable : ์บ์‹œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ด์•ผํ•˜๋ฉฐ, ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์žฅ์ ์œผ๋กœ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Uniform Interface : ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ„๋‹จํ•˜๊ณ  ํŒŒ์•…ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ •์˜ํ•œ ์กฐ๊ฑด์ด๋‹ค. ์žฅ์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ์ž์™€ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ˜๋‹ค.

    4๊ฐ€์ง€ ๊ทœ์•ฝ
    1. Identification of resources : ๋ฆฌ์†Œ์Šค๊ฐ€ URL๋กœ ์‹๋ณ„๋œ๋‹ค.
    2. Manipulation of resources through representations : ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ HTTP ๋ฉ”์‹œ์ง€์— ์ด๋Ÿฌํ•œ ํ‘œํ˜„์„ ๋‹ด์•„์„œ ์ „์†กํ•ด์•ผํ•œ๋‹ค.
    3. Self-descriptive messages : ๋ฉ”์„ธ์ง€๋Š” ์Šค์Šค๋กœ ์„ค๋ช…ํ•ด์•ผ ํ•œ๋‹ค. ๋ฉ”์„ธ์ง€๋งŒ ๋ณด๊ณ ๋„ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    4. Hypermedia as the engine of application state(HATEOAS)
    Self-descriptive messages ์™€ Hypermedia as the engine of application state ์ด ๋‘ ๊ทœ์•ฝ์ด ์ง€ํ‚ค๊ธฐ ํž˜๋“ค๋‹ค.

profile
ํด๋ฆฐ์ฝ”๋“œ๋ฅผ ์ข‹์•„ํ•˜๋Š” ๊ฐœ๋ฐœ์ž

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