TIL 26 | HTTP

dabin *.โ—Ÿ(หŠแ—จห‹)โ—ž.*ยท2021๋…„ 8์›” 26์ผ
1

etc

๋ชฉ๋ก ๋ณด๊ธฐ
1/14
post-thumbnail
post-custom-banner

ํ†ต์‹ ๊ณผ HTTP

HTTP๋Š” Hypertext Transfer Protocal์˜ ์•ฝ์ž์ด๋‹ค. ๋‹จ์–ด๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๋œฏ์–ด๋ณด์ž!

  • Hypertext : text๋ณด๋‹ค hyper ํ•œ ๊ฒƒ(์ด๋ฏธ์ง€, ๋น„๋””์˜ค ๋“ฑ). ๋ฌธ์„œ์™€ ๋ฌธ์„œ๊ฐ€ ๋งํฌ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ์„ ์˜๋ฏธ
  • Transfer : HTML๋กœ ๋งŒ๋“  ์›นํŽ˜์ด์ง€ ๋ฌธ์„œ๋ฅผ ๋ณด๋ƒ„
  • Protocol : ์ปดํ“จํ„ฐ๋ผ๋ฆฌ ์–ด๋–ป๊ฒŒ html ํŒŒ์ผ์„ ์ฃผ๊ณ  ๋ฐ›์„ ์ง€์— ๋Œ€ํ•œ ์†Œํ†ต ๋ฐฉ์‹ ๋˜๋Š” ์•ฝ์†์„ ์˜๋ฏธ

HTTP์˜ ํŠน์ง•

  1. Request/Response
    ์†Œํ†ต์˜ ํ•ต์‹ฌ์€ ์š”์ฒญ๊ณผ ์‘๋‹ต. ๋ฉ”์„ธ์ง€ ํ˜•์‹์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค.
  2. Stateless(์ƒํƒœ ์—†์Œ)

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

    ์ด๋ฏธ์ง€ ์ถœ์ฒ˜

์š”์ฒญ๊ณผ ์‘๋‹ต ๋ฉ”์„ธ์ง€ ๊ตฌ์กฐ

์š”์ฒญ ๋ฉ”์„ธ์ง€๋Š” ํฌ๊ฒŒ Start Line, Headers, Body ์„ธ ๊ฐ€์ง€์˜ ๊ตฌ์กฐ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค.

Start Line

  • Http Method
  • Request target : ํ•ด๋‹น request๊ฐ€ ์ „์†ก๋˜๋Š” ๋ชฉํ‘œ url
  • Http version

Headers

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

Body

  • ์‹ค์ œ ๋‚ด์šฉ
  • ์ฃผ๋กœ Body๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” POST
  • ๋ฉ”์„œ๋“œ์— ๋”ฐ๋ผ ์—†์„ ์ˆ˜๋„ ์žˆ์Œ

์‘๋‹ต ๋ฉ”์„ธ์ง€๋Š” ํฌ๊ฒŒ Status Line, Headers, Body ์„ธ ๊ฐ€์ง€์˜ ๊ตฌ์กฐ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค.
Status Line

  • ์ฒ˜๋ฆฌ ์ƒํƒœ๋ฅผ ์•Œ๋ ค์คŒ
  • HTTP Version : ์š”์ฒญ๊ณผ ๋™์ผ
  • Status Code : ์‘๋‹ต ๋ฉ”์„ธ์ง€์˜ ์ƒํƒœ์ฝ”๋“œ(200, 201 ๋“ฑ)
  • Status Text : ์ƒํƒœ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ํ…์ŠคํŠธ(OK, CREATED ๋“ฑ)

Headers

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

Body

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

์š”์ฒญ method

์•„๋ž˜ method๋Š” ํ”„๋ก ํŠธ ์ž…์žฅ์—์„œ์˜ ์˜๋„๊ฐ€ ๋‹ด๊ฒจ ์žˆ๋‹ค.

  • GET : ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ๋งŒ ํ•  ๋•Œ ์‚ฌ์šฉ, ์›นํŽ˜์ด์ง€์— ์ ‘์†ํ•ด์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์‚ฌ์šฉ
  • POST : ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ/์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉ, Body์— ๋‹ด๋Š” ๋‚ด์šฉ์ด ํ•ต์‹ฌ
  • DELETE : ์„œ๋ฒ„์— ์ €์žฅ๋œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉ

์‘๋‹ต status codes

์ƒํƒœ์ฝ”๋“œ๋Š” 3์ž๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ ์ฒซ๋ฒˆ์งธ ์ž๋ฆฌ๋Š” 1์—์„œ 5๊นŒ์ง€ ์ œ๊ณต๋œ๋‹ค.

  • 1xx(์ •๋ณด) :ย ์š”์ฒญ์„ ๋ฐ›์•˜์œผ๋ฉฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ„์† ์ง„ํ–‰
  • 2xx(์„ฑ๊ณต) :ย ์š”์ฒญ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐ›์•˜์œผ๋ฉฐ ์ธ์‹ํ–ˆ๊ณ  ์ˆ˜์šฉ
  • 3xx(๋ฆฌ๋‹ค์ด๋ ‰์…˜) :ย ์š”์ฒญ ์™„๋ฃŒ๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€ ์ž‘์—… ์กฐ์น˜๊ฐ€ ํ•„์š”
  • 4xx(ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜) :ย ์š”์ฒญ์˜ ๋ฌธ๋ฒ•์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Œ
  • 5xx(์„œ๋ฒ„ ์˜ค๋ฅ˜) :ย ์„œ๋ฒ„๊ฐ€ ๋ช…๋ฐฑํžˆ ์œ ํšจํ•œ ์š”์ฒญ์— ๋Œ€ํ•œ ์ถฉ์กฑ์„ ์‹คํŒจ

sucess

  • 200 : OK
  • 201 : Created

error

  • 400 : Bad request, ํ•ด๋‹น ์š”์ฒญ์ด ์ž˜๋ชป๋˜์—ˆ์„ ๋•Œ, ์ฃผ๋กœ ์š”์ฒญ์˜ body์— ๋ณด๋‚ด๋Š” ๋‚ด์šฉ์ด ์ž˜๋ชป๋˜์—ˆ์„ ๋•Œ
  • 401 : Unauthorized, ๋จผ์ € ๋กœ๊ทธ์ธ์„ ํ•˜๊ฑฐ๋‚˜ ํšŒ์›๊ฐ€์ž… ํ•ด์ฃผ์„ธ์š”
  • 403 : Forbidden, ์œ ์ €๊ฐ€ ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ๊ถŒํ•œ์ด ์—†์Œ
  • 404 : Not found

server error

์ž์ฃผ์ž์ฃผ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ network์ฐฝ์„ ํ™•์ธํ•ด๋ณด์ž.

profile
๋ชจ๋ฅด๋Š”๊ฒƒํˆฌ์„ฑ์ด
post-custom-banner

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

comment-user-thumbnail
2021๋…„ 9์›” 16์ผ

์™€ ๋‹ค๋นˆ๋‹˜... ๋Œ€๋ฐ• HTTP ๊ณต๋ถ€ ์—ด์‹ฌํžˆ ํ•˜๊ณ  ์žˆ์œผ์‹œ๋„ค์š” ํ™”์ดํŒ…!

1๊ฐœ์˜ ๋‹ต๊ธ€