TIL-032 | HTTP

Lee, Chankyuยท2021๋…„ 10์›” 25์ผ
0
post-thumbnail

๐ŸŒˆ HTTP ๋ž€? (Hyper Text Transfer Protocol)

  • HyperText

    • HTML(Hyper Text Markup Language)์˜ Hyper Text์™€ ๋™์ผํ•œ ์˜๋ฏธ์ด๋ฉฐ ๋ฌธ์„œ์™€ ๋ฌธ์„œ๊ฐ€ ๋งํฌ๋กœ ์—ฐ๊ฒฐ๋˜๋„๋ก ํ•˜๋Š” ํƒœ๊ทธ๋กœ ๊ตฌ์„ฑ๋œ ์–ธ์–ด๋ฅผ ๋œปํ•œ๋‹ค.
  • Transfer

    • HTML๋กœ ๋งŒ๋“  ๋ฌธ์„œ๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ, ๋ณด๋‚ด๋Š” ์ฃผ์ฒด์™€ ๋ฐ›๋Š” ์ฃผ์ฒด๊ฐ€ ์žˆ๋‹ค.
  • Protocol

    • ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ HyperText Transfer๋ฅผ ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์–‘์‹๊ณผ ๊ทœ์น™์˜ ์ฒด๊ณ„์ด๋‹ค.

HTTP์˜ ํŠน์ง•

๐Ÿ‘‰ Request(์š”์ฒญ) / Response(์‘๋‹ต)

  • Transfer์˜ ๋ณด๋‚ด๋Š” ์ฃผ์ฒด์™€ ๋ฐ›๋Š” ์ฃผ์ฒด ๊ฐ„์˜ ์†Œํ†ต์ด๋‹ค.
  • HTTP์˜ ํ•ต์‹ฌ

๐Ÿ‘‰ Stateless

  • State(์ƒํƒœ) + less(์—†์Œ) ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ๊ฐ๊ฐ์˜ HTTP ํ†ต์‹ (์š”์ฒญ/์‘๋‹ต)์€ ๋…๋ฆฝ์  ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณผ๊ฑฐ์˜ ํ†ต์‹ (์š”์ฒญ/์‘๋‹ต)์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ „ํ˜€ ์•Œ์ง€ ๋ชป ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋งค ํ†ต์‹ ๋งˆ๋‹ค ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋‹ด์•„์„œ ์š”์ฒญ์„ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ €์˜ ์ฟ ํ‚ค, ์„ธ์…˜, ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€ ๊ทธ๋ฆฌ๊ณ  ๋กœ๊ทธ์ธ ํ† ํฐ ๊ฐ™์€ ๊ธฐ์ˆ ์ด ์ด ๊ฐ™์€ ์ด์œ ๋กœ ํ•„์š”์— ์˜ํ•ด ์ƒ๊ฒจ๋‚ฌ๋‹ค.

Request & Response

Request ๋ฉ”์„ธ์ง€์˜ ๊ตฌ์กฐ

  • Start Line

    • HTTP method, url, HTTP version์˜ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
    1. HTTP Method: ํ•ด๋‹น ์š”์ฒญ์ด ์˜๋„ํ•œ ์•ก์…˜์„ ์ •์˜ํ•˜๋Š” ๋ถ€๋ถ„. ์ฃผ๋กœ GET, POST, DELETE๊ฐ€ ๋งŽ์ด ์“ฐ์ž„
    2. Request target: ํ•ด๋‹น request๊ฐ€ ์ „์†ก๋˜๋Š” ๋ชฉํ‘œ url
    3. HTTP Version: ๋ง ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ๋˜๋Š” HTTP ๋ฒ„์ „์„ ๋œปํ•œ๋‹ค. ์ฃผ๋กœ 1.1 ๋ฒ„์ „์ด ๋„๋ฆฌ ์“ฐ์ž„
  • Headers

    • ์š”์ฒญ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์ด๋ฉฐ key:value ๊ฐ’์˜ ํ˜•ํƒœ๋กœ ๋˜์–ด์žˆ๋‹ค.

    Host : ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ชฉํ‘œ(ํƒ€๊ฒŸ)์˜ ์ฃผ์†Œ. ์ฆ‰, ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์›น์‚ฌ์ดํŠธ์˜ ๊ธฐ๋ณธ ์ฃผ์†Œ๊ฐ€ ๋œ๋‹ค (ex. www.apple.co.kr)
    User-Agent : ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๋Œ€ํ•œ ์ •๋ณด (ex. chrome, firefox, safari, explorer)
    Content-Type: ํ•ด๋‹น ์š”์ฒญ์ด ๋ณด๋‚ด๋Š” ๋ฉ”์„ธ์ง€ body์˜ ํƒ€์ž… (ex. application/json)
    Content-Length : body ๋‚ด์šฉ์˜ ๊ธธ์ด
    Authorization : ํšŒ์›์˜ ์ธ์ฆ/์ธ๊ฐ€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ์ธ ํ† ํฐ์„ Authroization ์— ๋‹ด๋Š”๋‹ค

  • Body

    • ํ•ด๋‹น ์š”์ฒญ์˜ ์‹ค์ œ ๋‚ด์šฉ์ด ํฌํ•จ๋œ๋‹ค.
    • ์ฃผ๋กœ POST ๋ฉ”์†Œ๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ฉ”์†Œ๋“œ์— ๋”ฐ๋ผ ๋น„์–ด์žˆ๊ธฐ๋„ ํ•˜๋‹ค.

Response ๋ฉ”์„ธ์ง€์˜ ๊ตฌ์กฐ

  • Status line

    • ์‘๋‹ต์˜ ์ƒํƒœ ์ค„์ด๋ฉฐ, Request ๋ฉ”์„ธ์ง€ ์ฒ˜๋Ÿผ ํฌ๊ฒŒ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
    1. HTTP Version: ์š”์ฒญ์˜ HTTP๋ฒ„์ „๊ณผ ๋™์ผ
    2. Status Code: ์‘๋‹ต ๋ฉ”์„ธ์ง€์˜ ์ƒํƒœ ์ฝ”๋“œ
    3. Status Text: ์‘๋‹ต ๋ฉ”์„ธ์ง€์˜ ์ƒํƒœ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ๋Š” ํ…์ŠคํŠธ
  • Headers

    • ์š”์ฒญ์˜ ํ—ค๋”์™€ ๋™์ผํ•˜๋‹ค. ์‘๋‹ต์˜ ์ถ”๊ฐ€ ์ •๋ณด(๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ)๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” ๋ถ€๋ถ„์ด๋‹ค. ๋‹ค๋งŒ, ์‘๋‹ต์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ํ—ค๋”์˜ ์ •๋ณด๋“ค์ด ์žˆ๋‹ค. (ex. ์š”์ฒญํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด User-Agent ๋Œ€์‹ , Server ํ—ค๋”๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.)
  • Body

    • ์š”์ฒญ์˜ Body์™€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์ผํ•˜๋‹ค. ์š”์ฒญ์˜ ๋ฉ”์†Œ๋“œ์— ๋”ฐ๋ผ Body๊ฐ€ ํ•ญ์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋“ฏ์ด. ์‘๋‹ต๋„ ์‘๋‹ต์˜ ํ˜•ํƒœ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—” Body๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” Body ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ JSON(JavaScript Object Notation) ์ด๋‹ค.

profile
Backend Developer - "Growth itself contains the germ of happiness"

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