๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Computer Science/Network

[CS] HTTP์™€ REST

by The Future Engineer, Lucy 2024. 11. 21.
728x90
๋ฐ˜์‘ํ˜•

HTTP

  • ์ธํ„ฐ๋„ท์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ๋กœ, TCP/IP 4๊ณ„์ธต์—์„œ ์‘์šฉ ๊ณ„์ธต์— ์†ํ•จ.
  • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์ •ํ˜•ํ™”๋œ ๋ฐ์ดํ„ฐ์ธ HTTP ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์Œ.

HTTP ํŠน์ง•

  1. ๋น„์—ฐ๊ฒฐ์„ฑ(Connectionless)
  • ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด ์—ฐ๊ฒฐ์„ ๋Š๋Š” ๊ฒƒ
  • ๋น„์—ฐ๊ฒฐ์„ฑ์€ ๋ถˆํŠน์ • ๋‹ค์ˆ˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์„œ๋น„์Šค์— ์œ ๋ฆฌ.
  • ์„œ๋ฒ„์—์„œ ์‘๋‹ต์„ ๋ฐ›๊ณ  ๋‚˜์„œ๋„ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ๊ทธ๋งŒํผ ์ž์›์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋จ. โžก๏ธ ๋น„์—ฐ๊ฒฐ์„ฑ์€ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ ์ž์›์„ ์•„๋‚„ ์ˆ˜ ์žˆ์Œ.
  • ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ธฐ์–ตํ•  ์ˆ˜ ์—†์Œ.
  • ๋™์ผํ•œ ํด๋ผ์ด์–ธํŠธ์—์„œ ์—ฐ์†์ ์œผ๋กœ ์š”์ฒญ์ด ์˜ค๋ฉด ์—ฐ๊ฒฐ๊ณผ ์—ฐ๊ฒฐ ํ•ด์ œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋˜์–ด ์ž์›์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋จ.
  • ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก HTTP Keep Alive๋ฅผ ์‚ฌ์šฉํ•จ. โžก๏ธ ๋งˆ์ง€๋ง‰ ์‘๋‹ต ์ดํ›„ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•ด ๋™์ผํ•œ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์ด ์˜ค๋ฉด ์—ฐ๊ฒฐ ๊ณผ์ • ์ƒ๋žต ๊ฐ€๋Šฅ.
  1. ๋ฌด์ƒํƒœ(Stateless)
  • ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š” ๊ฒƒ
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด์ „์— ์š”์ฒญํ•œ ์‚ฌํ•ญ์„ ์„œ๋ฒ„์— ์ €์žฅํ•˜์ง€ ์•Š์Œ. โžก๏ธ ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๊ฑฐ๋‚˜ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์š”์ฒญ ์‚ฌํ•ญ์„ ๋ชจ๋‘ ์ €์žฅํ•ด์•ผ ํ•จ. ์ด ๋ฐฉ๋ฒ•๋“ค์„ ๊ฐ๊ฐ ์ฟ ํ‚ค(Cookie)์™€ ์„ธ์…˜(Session)์ด๋ผ๊ณ  ํ•จ.
  • ์„œ๋ฒ„ ํ™•์žฅ์„ฑ์ด ๋†’์Œ. ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ์‘๋‹ตํ•˜๋Š” ์„œ๋ฒ„๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋ฅผ ๊ณ„์† ํ™•์žฅํ•ด๋„ ๋จ. โžก๏ธ ํŠน์ • ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ ์‘๋‹ตํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ์  ๋ณด์™„ ๊ฐ€๋Šฅ.

HTTPS

  • ๋ณด์•ˆ ๊ณ„์ธต์ธ SSL/TLS๋ฅผ ์ด์šฉํ•ด HTTP์˜ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•œ ์›น ํ†ต์‹  ํ”„๋กœํ† ์ฝœ.
  • HTTP๋Š” ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ „์†กํ•ด์„œ ๋ณด์•ˆ์— ์ทจ์•ฝํ•จ. ์ด๋ฅผ ๋ณด์™„ํ•œ HTTPS ๋“ฑ์žฅ.
  • SSL์€ ๋„ท์Šค์ผ€์ดํ”„์—์„œ ๊ฐœ๋ฐœํ•œ ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ๋กœ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์ด ์žˆ๋Š”๋ฐ, ์ด๋ฅผ ๋ณด์™„ํ•ด ์ƒˆ๋กœ์šด ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ์ธ TLS ๊ฐœ๋ฐœ.
  • ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•  ๋•Œ ์‘์šฉ ๊ณ„์ธต์—์„œ ๋ณด์•ˆ ๊ณ„์ธต์˜ SSL/TLS๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•ด ์ „์†ก ๊ณ„์ธต์œผ๋กœ ์ „๋‹ฌ.
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•  ๋•Œ ์ „์†ก ๊ณ„์ธต์—์„œ ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์•ˆ ๊ณ„์ธต์˜ SSL/TLS์—์„œ ๋ฐ›์•„ ๋ณตํ˜ธํ™”ํ•œ ํ›„ ์‘์šฉ ๊ณ„์ธต์œผ๋กœ ๋ณด๋ƒ„.

REST

  • HTTP ํ†ต์‹ ์„ ์‰ฝ๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•.

REST(Representational State Transfer)๋ž€?

  • HTTP ํ†ต์‹ ์„ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ์•„ํ‚คํ…์ฒ˜.
  • Representational ์€ ์ธํ„ฐ๋„ท์ƒ์˜ ์ž์›์„ URI๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธ.
    • ํด๋ผ์ด์–ธํŠธ๋Š” URI๋กœ ํ‘œํ˜„๋œ ์ž์›์„ HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด CRUD(Create, Read, Update, Delete) ์—ฐ์‚ฐ ๊ฐ€๋Šฅ.
  • State Transfer ๋Š” ์ž์›์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒƒ, ์ฆ‰ ์š”์ฒญ๋ฐ›์€ ์ž์›์˜ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ.
  • Rest๋Š” ์ž์›์„ ๋ช…์‹œํ•ด ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒƒ.
  • REST ํŠน์ง•
    • ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค: ์ž์›์„ ๋‚˜ํƒ€๋‚ด๋Š” URI๋ฅผ HTTP ๋ฉ”์„œ๋“œ๋กœ ์กฐ์ž‘ํ•˜๋Š” ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉ. HTTP๋ฅผ ๋”ฐ๋ฅด๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ REST ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
    • ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ: ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์š”์ฒญ-์‘๋‹ต์˜ ๋…๋ฆฝ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต ๋Œ€๊ธฐ. ์„œ๋ฒ„๋Š” ์ž์›์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ์‘๋‹ต.
    • ๋ฌด์ƒํƒœ์„ฑ: ์„œ๋ฒ„์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์Œ. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ์™€ ์‘๋‹ต๋งŒ ํ•จ. ์‚ฌ์šฉ์ž ์ธ์ฆ, ๋กœ๊ทธ์ธ ์ •๋ณด ๋“ฑ์€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ง์ ‘ ๊ด€๋ฆฌ.
    • ์บ์‹ฑ ๊ฐ€๋Šฅ: HTTP ํ‘œ์ค€์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ๋Š” ์ด์ „์— ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์‘๋‹ต์„ ์ €์žฅ ๋ฐ ์žฌ์‚ฌ์šฉํ•˜๋Š” ์บ์‹ฑ ๊ฐ€๋Šฅ. ์บ์‹ฑ์€ ํด๋ผ์ด์–ธํŠธ์˜ ๋งŽ์€ ์š”์ฒญ์œผ๋กœ๋ถ€ํ„ฐ ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ค„์—ฌ ์ฃผ๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ๋น„๊ต์  ๋นจ๋ฆฌ ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•จ.
    • ์ž์ฒด ํ‘œํ˜„ ๊ตฌ์กฐ: REST API๋Š” ์ž์›, ํ–‰์œ„, ํ‘œํ˜„์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด REST API ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๊ณ  ์–ด๋–ค ์š”์ฒญ์„ ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Œ.
    • ๊ณ„์ธตํ˜• ๊ตฌ์กฐ: REST ์„œ๋ฒ„๋Š” ๋‹ค์ค‘ ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์–ด์„œ ๋ณด์•ˆ, ์•”ํ˜ธํ™”์™€ ๊ฐ™์€ ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•ด ์„œ๋ฒ„์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅ.
  • REST ํŠน์ง•๊ณผ ํ•จ๊ป˜ HTTP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์ถ•ํ•  ํ•„์š”๊ฐ€ ์—†์Œ. โžก๏ธ HTTP ํ‘œ์ค€์„ ๋”ฐ๋ฅด๋ฉด REST๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
  • HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ž์›์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๋™์ž‘์ด ํ•œ์ •์ .

โ€ป URI(Uniform Resource Identifier): ์ธํ„ฐ๋„ท์— ์žˆ๋Š” ์ž์›์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ฃผ์†Œ. URI๋Š” ์ธํ„ฐ๋„ท์—์„œ ์š”๊ตฌํ•˜๋Š” ๊ธฐ๋ณธ ์กฐ๊ฑด์œผ๋กœ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ์— ํ•ญ์ƒ ๋ถ™์–ด ๋‹ค๋‹˜. URI์˜ ํ•˜์œ„ ๊ฐœ๋…์œผ๋กœ URL, URN์ด ์žˆ์Œ.
โ€ป URL(Uniform Resource Locator): ์ธํ„ฐ๋„ท์—์„œ ์ž์›์˜ ์œ„์น˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ทœ์•ฝ. ์›น ์‚ฌ์ดํŠธ ์ฃผ์†Œ์™€ ์ธํ„ฐ๋„ท์˜ ๋ชจ๋“  ์ž์›์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Œ.
โ€ป URN(Uniform Resource Name): ์ž์›์˜ ์œ„์น˜ ์ •๋ณด๊ฐ€ ์•„๋‹Œ ์‹ค์ œ ์ž์›์„ ํŠน์ •.

REST API

  • REST๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ API.
  • ์ž์›์˜ ์‹๋ณ„์€ URI๋กœ ํ•˜๊ณ , ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„(์ฒ˜๋ฆฌ)๋Š” HTTP ๋ฉ”์„œ๋“œ๋กœ ๋‚˜ํƒ€๋ƒ„. ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” JSON ๋˜๋Š” XML ๋“ฑ์œผ๋กœ ํ‘œํ˜„.
728x90
๋ฐ˜์‘ํ˜•