1์ฃผ์ฐจ (2) HTTP & REST API

๋ฐฑ์†Œํ˜„ยท2025๋…„ 4์›” 7์ผ

๐Ÿ–ฅ๏ธํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๋ชจ๋ธ

๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•ฑ๊ณผ ์กด์žฌํ•˜๋Š” ๊ณณ์„ ๋ถ„๋ฆฌํ•œ ๋ชจ๋ธ

  • 2-tier ์•„ํ‚คํ…์ณ
  • ํด๋ผ์ด์–ธํŠธ : ์›น/์•ฑ์„ ์ด์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž (์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญ)
  • ์„œ๋ฒ„ : ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด์„œ ์‘๋‹ตํ•˜๊ฒŒ ๋จ

๐Ÿ“ขHTTP

์š”์ฒญ/์‘๋‹ต ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ง

  • HTTP request ๊ตฌ์กฐ
    1. Start line

      • HTTP Method : ์š”์ฒญ์ด ์˜๋„ํ•œ action(GET, POST, DELETE, PUT โ€ฆ)
        • GET : ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์ทจ๋“
        • POST : ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ์ž‘์„ฑ
        • PUT : ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ ๊ฐฑ์‹ , ์ž‘์„ฑ
        • DELETE : ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ ์‚ญ์ œ
        • HEAD : ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค์˜ ํ—ค๋”
        • OPTIONS : ๋ฆฌ์†Œ์Šค๊ฐ€ ์ง€์›ํ•˜๊ณ  ์žˆ๋Š” ๋ฉ”์†Œ๋“œ์˜ ์ทจ๋“
        • PATCH : ๋ฆฌ์†Œ์Šค ์ผ๋ถ€๋ถ„ ์ˆ˜์ •
        • CONNECT : ํ”„๋ก์‹œ ๋™์ž‘์˜ ํ„ฐ๋„ ์ ‘์† ๋ณ€๊ฒฝ
      • Request Target : request๊ฐ€ ์ „์†ก๋˜๋Š” ๋ชฉํ‘œ ์ฃผ์†Œ
      • HTTP Version
    2. Headers

      request์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„
      Key:Value ํ˜•ํƒœ

      • general header : ์š”์ฒญ/์‘๋‹ต ๋ชจ๋‘ ์ ์šฉ. ๋ฐ”๋””์—์„œ ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ฌด๊ด€
      • request header : ํŽ˜์น˜๋  ๋ฆฌ์†Œ์Šค๋‚˜ ํด๋ผ์ด์–ธํŠธ ์ž์ฒด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จ(๋ณด๋‚ด๋Š” ๋ฉ”์„ธ์ง€)
      • response header : ์œ„์น˜ ๋˜๋Š” ์„œ๋ฒ„ ์ž์ฒด์— ๋Œ€ํ•œ ์ •๋ณด ๋“ฑ ์‘๋‹ต์— ๋Œ€ํ•œ ๋ถ€๊ฐ€์ ์ธ ์ •๋ณด ํฌํ•จ(๋ฐ›์€ ๋ฉ”์„ธ์ง€)
        • entity header : entity ๋ฐ”๋””์— ๋Œ€ํ•œ ์ •๋ณด ํฌํ•จ
    3. body

      HTTP Request๊ฐ€ ์ „์†กํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„

      • ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ๋น„์–ด์žˆ์Œ
      • POST ์š”์ฒญ์ผ ๊ฒฝ์šฐ HTML ํผ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ
  • Response Message
    1. Status Line
      • HTTP Response์˜ ์ƒํƒœ ๊ฐ„๋žตํžˆ ๋‚˜ํƒ€๋ƒ„
      • HTTP version, Status Code, Status Text
    2. headers
      • Request์™€ ๋™์ผ
    3. body
      • Request์™€ ๋™์ผ
  • ์ƒํƒœ ์ฝ”๋“œ
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ HTTP ์š”์ฒญ์— ๋Œ€ํ•œ ์„œ๋ฒ„์˜ ์‘๋‹ต ์ฝ”๋“œ
    • ์š”์ฒญ์˜ ์„ฑ๊ณต/์‹คํŒจ ์—ฌ๋ถ€ ํŒ๋‹จ

      100 : ์กฐ๊ฑด๋ถ€ ์‘๋‹ต โ†’ ์š”์ฒญ์ด ์ˆ˜์‹ ๋˜์–ด ์ฒ˜๋ฆฌ ์ค‘์„ ์˜๋ฏธ
      200~206 : ์š”์ฒญ์„ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•จ
      300~308 : ์š”์ฒญ ์™„๋ฃŒ๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€ ์ž‘์—… ์กฐ์น˜๊ฐ€ ํ•„์š”
      400~429 : ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Œ
      500~504 : ์„œ๋ฒ„ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์„œ๋ฒ„๊ฐ€ ์ •์ƒ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•จ

โ˜๏ธREST API

  • Representational State Transfer API
    โ†’ REST์˜ ์›๋ฆฌ๋ฅผ ๋”ฐ๋ฅด๋Š” API
  • REST : HTTP URI๋ฅผ ํ†ตํ•ด ์ž์›์„ ๋ช…์‹œํ•˜๊ณ  HTTP Method๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ž์›์— ๋Œ€ํ•œ CRUD Operation(์ƒ์„ฑ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ)์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ

๊ตฌ์„ฑ ์š”์†Œ

  1. ์ž์› โ†’ HTTP URI
  2. ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„ โ†’ HTTP Method
  3. ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„์˜ ๋‚ด์šฉ โ†’ HTTP Message Pay Load

์žฅ์ 

  • HTTP ํ”„๋กœํ† ์ฝœ ์ธํ”„๋ผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ณ„๋„์˜ ์ธํ”„๋ผ ๊ตฌ์ถ• ํ•„์š” ์—†์Œ
  • ์˜๋„ํ•˜๋Š” ๋ฐ”๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ญํ• ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•œ๋‹ค
  • ์„œ๋น„์Šค ๋””์ž์ธ ๋ฌธ์ œ๋ฅผ ์ตœ์†Œํ™”ํ•œ๋‹ค
  • HTTP ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ฅด๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๋‹จ์ 

  • ํ‘œ์ค€์ด ์กด์žฌํ•˜์ง€ ์•Š์•„ ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค
  • HTTP Method ํ˜•ํƒœ๊ฐ€ ์ œํ•œ์ ์ด๋‹ค
  • ์ „๋ฌธ์„ฑ์ด ์š”๊ตฌ๋œ๋‹ค
  • ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค

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