[210715 TIL] HTTP

Choi Rimยท2021๋…„ 7์›” 15์ผ
0

Way to developer

๋ชฉ๋ก ๋ณด๊ธฐ
17/21
post-thumbnail

ํ†ต์‹ ๊ณผ HTTP

  • ์ปดํ“จํ„ฐ๋“ค๋ผ๋ฆฌ๋„ ์„œ๋กœ ์†Œํ†ตํ•˜๋Š” ์–ธ์–ด๊ฐ€ ์žˆ๋‹ค.
    • ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ HTTP์ด๋‹ค.
    • HyperText Transfer Protocol
  • HyperText
    • ๋‹จ์ˆœํ•œ ํ…์ŠคํŠธ๊ฐ€ ์•„๋‹ˆ๊ณ  ๋ฌธ์„œ์™€ ๋ฌธ์„œ๊ฐ€ ๋งํฌ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ์„ ๋œปํ•จ
  • Transfer
    • ์ „์†กํ•˜๋‹ค
    • HTML๋กœ ๋งŒ๋“  ์›นํŽ˜์ด์ง€ ๋ฌธ์„œ(ํŒŒ์ผ)์„ ๋ณด๋‚ธ๋‹ค.
  • Protocol
    • ์ปดํ“จํ„ฐ๋ผ๋ฆฌ ์–ด๋–ป๊ฒŒ HTMLํŒŒ์ผ์„ ์ฃผ๊ณ  ๋ฐ›์„ ์ง€์— ๋Œ€ํ•œ ์†Œํ†ต ๋ฐฉ์‹ ๋˜๋Š” ์•ฝ์†
  • ๊ธ€์ž์™€ ๊ธ€์ž๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ฌธ์„œ(HTML)๋ฅผ ์ปดํ“จํ„ฐ๋ผ๋ฆฌ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ์œ„ํ•œ ํ†ต์‹  ์•ฝ์†(๊ทœ์•ฝ)
  • ์‚ฌ์šฉ์ž๊ฐ€ Request๋ฅผ ํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ Response๋ฅผ ๋ณด๋‚ด์ค€๋‹ค.

HTTP์˜ ๋‘๊ฐ€์ง€ ํŠน์ง•

  • Request & Response
    • Request : "์„œ๋ฒ„์•ผ ๋‚˜๋Š” hyerim์ด์•ผ ๋กœ๊ทธ์ธ ์‹œ์ผœ์ค„๋ž˜?"
    • Response : "๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค!"
  • Stateless
    • ์ƒํƒœ์—†์Œ
    • HTTP ๊ฐœ๋ณ„ ํ†ต์‹ ์€ ๋ชจ๋‘ ๋…๋ฆฝ์ ์ด์–ด์„œ, ๊ณผ๊ฑฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์กดํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ์ฒซ๋ฒˆ์งธ ํ†ต์‹ 
      • Request : "์„œ๋ฒ„์•ผ ๋‚˜๋Š” hyerim์ด์•ผ ๋กœ๊ทธ์ธ ์‹œ์ผœ์ค„๋ž˜?"
      • Response : "๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค!"
    • ๋‘๋ฒˆ์งธ ํ†ต์‹ 
      • Request : "์„œ๋ฒ„์•ผ ๋‚˜ ์•„๊นŒ ๋กœ๊ทธ์ธ ํ–ˆ์–ด. ๋กœ๊ทธ์ธ ์‹œ์ผœ์ค„๋ž˜?"
      • Response : "๋ˆ„๊ตฌ์„ธ์š”?"
    • HTTP๋Š” ๊ธฐ์–ต์ƒ์‹ค์ฆ์— ๊ฑธ๋ ค์žˆ๋‹ค..
    • ์šฐ๋ฆฌ์˜ ์š”์ฒญ์€ ์—ฐ์‡„์ ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
      • ๊ทธ๊ฒƒ์„ HTTP๋Š” ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•œ๋‹ค.
      • ์žฅ์ ์€ ๊ฐ๊ฐ์˜ ํ†ต์‹ ๋“ค์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ๋””์ž์ธ์ด ๊ฐ„๋‹จํ•ด์ง„๋‹ค.
      • ๋‹จ์ˆœํžˆ ์‘๋‹ต์— ๋”ฐ๋ฅธ ์š”์ฒญ๋งŒ ๋ณด๋‚ด๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๊ฒฐํ•˜๋‹ค.
      • ๋‹จ์ ์€ ๋ณด๋‚ผ๋•Œ๋งˆ๋‹ค ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ํ•œ๋ฒˆ์— ๋‹ด์•„ ๋ณด๋‚ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
      • ํ† ํฐ
        • HTTP๋Š” ์ด์ „ ์š”์ฒญ์„ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์ค€๋‹ค.
        • ํ† ํฐ์ด๋ผ๋Š” ID์นด๋“œ๋ฅผ ๋กœ๊ทธ์ธ ์ฐฝ๊ตฌ์—์„œ ์ฐ์–ด์„œ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ!

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

  • Start Line
    • HTTP method
      • ์š”์ฒญ์ด ์˜๋„ํ•œ ์•ก์…˜์„ ์ •์˜
      • GET, POST
    • Request target
    • HTTP version
    • GET / login HTTP /1.1
  • Headers
    • ์š”์ฒญ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„
    • ๊ฐ์ฒด, ๋”•์…”๋„ˆ๋ฆฌ {key: value} ์˜ ํ˜•ํƒœ
    • Headers : {
      Host : www.wecode.co.kr
      User-Agent: chrome
      Context-Type : application/json
      Content-Length : 50
      }
  • Body
    • ์š”์ฒญ์˜ ์‹ค์ œ ๋‚ด์šฉ

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

  • Status Line
    • ์š”์ฒญ์— ๋Œ€ํ•œ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ„
    • HTTP version
    • Status Code
    • Status Text
    • HTTP/1.1 404 Not Found
  • Headers
  • Body

HTTP Request Methods

request method

  • GET
    • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ๋งŒ ํ•  ๋•Œ ์‚ฌ์šฉ
    • Body์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.
  • POST
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ, ์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉ
    • Body์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.
  • DELETE
    • ์„œ๋ฒ„์— ์ €์žฅ๋œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉ
    • Body์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์—†๋‹ค.
      • ๋„ฃ์„ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ HTTP ํ†ต์‹ ์€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์ด๋™์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ธŒ๋ผ์šฐ์ € ์ค‘ chrome์€ DELETE ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด body๋ฅผ ์ฝ์–ด์˜ค์ง€ ์•Š๋Š”๋‹ค.
      • ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ๋‹ค๋ฅด์ง€๋งŒ ์™„์ „ํ•˜์ง€ ์•Š๊ธฐ๋•Œ๋ฌธ์— Body์— ๋‹ด์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

status code

  • Success
    • ์‘๋‹ต์ด ์ œ๋Œ€๋กœ ๋˜์—ˆ์„ ๋•Œ์˜ ์ƒํƒœ ์ฝ”๋“œ
    • 200 : OK
    • 201 : Created
  • Error
    • ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ ์‘๋‹ต์ด ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š์•˜์„ ๋•Œ์˜ ์ƒํƒœ ์ฝ”๋“œ
    • 400 : Bad Request
    • 401 : Unauthorized
    • 403 : Forbidden
      • ๊ถŒํ•œ ์—†์Œ
    • 404 : Not Found
      • ์š”์ฒญํ•œ ํŽ˜์ด์ง€๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ
    • ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต
      • ํ”„๋ก ํŠธ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์—๋Ÿฌ!
  • Server Error
    • 500 : Internal Server Error
      • ์„œ๋ฒ„๊ฐ€ ํ„ฐ์กŒ์–ด์š”...
profile
https://rimi0108.github.io/

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