HTTP

hazel'sยท2022๋…„ 4์›” 7์ผ
0

web

๋ชฉ๋ก ๋ณด๊ธฐ
6/10
post-thumbnail

๐Ÿš€ ํ•™์Šต ๋ชฉํ‘œ
1.HTTP์˜ ํŠน์ง•์ธ Stateless๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
2.Request, Response ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
3.HTTP request method์˜ ์ข…๋ฅ˜๋ฅผ ์•Œ๊ณ  ์„œ๋กœ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
4.๋Œ€ํ‘œ์ ์ธ Status code์˜ ์ข…๋ฅ˜๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

01. ํ†ต์‹ ๊ณผ HTTP

HTTP๋ž€?

(= How do we communicate?)
(= HyperTextTransferProtocol)

hyperText
HTML(Hyper Text Markup Language)
=๋ฌธ์„œ์™€ ๋ฌธ์„œ๊ฐ€ ๋งํฌ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๋Š” ๋œป.

Transfer
์ „์†กํ•˜๋‹ค = ๋ฌผ๊ฑด์ด๋‚˜ ํŽธ์ง€ ๋”ฐ์œ„๋ฅผ ๋ณด๋‚ด๋‹ค
html๋กœ ๋งŒ๋“  ์›นํŽ˜์ด์ง€ ๋ฌธ์„œ๋ฅผ ๋ณด๋‚ธ๋‹ค.

Protocol
์ปดํ“จํ„ฐ๋ผ๋ฆฌ ์–ด๋–ป๊ฒŒ htmlํŒŒ์ผ์„ ์ฃผ๊ณ  ๋ฐ›์„ ์ง€์— ๋Œ€ํ•œ ์†Œํ†ต ๋ฐฉ์‹ ๋˜๋Š” ์•ฝ์†

์›น์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ (๋งˆ์ผ“์ปฌ๋ฆฌ์—์„œ ์ฑ„์†Œ ๋ชฉ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ)

ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„๋•Œ ์ •ํ•ด๋†“์€ ๊ทœ์•ฝ!

1.How HTTP works?

client : request(์š”์ฒญ) โ†”๏ธ server : response(์‘๋‹ต)

์ปดํ“จํ„ฐ๋„ ์ธ๊ฐ„์ด ์†Œํ†ตํ•˜๋“ฏ์ด ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋ฉ”์„ธ์ง€ํ˜•์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

2.Stateless

State(์ƒํƒœ) + less(์—†์Œ)

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

stateful

์•„์ด์Šค๋ผ๋–ผ ์–ผ๋งˆ์ž…๋‹ˆ๊นŒ? โžก๏ธโฌ…๏ธ 4500์›์ด์š”(์•„์ด์Šค๋ผ๋–ผ ์ƒํƒœ ์ €์žฅ)
์‹œ๋Ÿฝ 2ํŽŒํ”„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š” โžก๏ธโฌ…๏ธ ๋„ค ๋ฌด์—‡์œผ๋กœ ๊ฒฐ์ œํ•˜์‹œ๊ฒ ์–ด์š”?( ์•„์ด์Šค๋ผ๋–ผ, ์‹œ๋Ÿฝ๋‘ํŽŒํ”„ ์ถ”๊ฐ€ ์ƒํƒœ ์ €์žฅ)
์นด๋“œ๋กœ ๊ฒฐ์ œํ• ๊ป˜์š” โžก๏ธโฌ…๏ธ ๋„ค (์•„์ด์Šค๋ผ๋–ผ, ์‹œ๋Ÿฝ ๋‘ํŽŒํ”„, ์นด๋“œ๊ฒฐ์ œ ์ƒํƒœ์ €์žฅ)

stateless

์•„์ด์Šค๋ผ๋–ผ ๊ฐ€๊ฒฉ์€? โžก๏ธโฌ…๏ธ 4500์›์ด์š”
์‹œ๋Ÿฝ 2ํŽŒํ”„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š” โžก๏ธโฌ…๏ธ ๋ฌด์—‡์„ ์‹œ๋Ÿฝ์— ์ถ”๊ฐ€ํ•ด์„œ ๋“œ๋ฆด๊นŒ์š”?
์นด์นด์˜คํŽ˜์ด๋กœ ํ• ๊ป˜์—ฌ โžก๏ธโฌ…๏ธ ๋ฌด์—‡์„ ์นด์นด์˜คํŽ˜์ด๋กœ ๊ฒฐ์ œ ํ•ด๋“ค๋ฆด๊นŒ์š”?

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

์•„์ด์Šค๋ผ๋–ผ ์–ผ๋งˆ์—์š”? โžก๏ธโฌ…๏ธ 4500์›์ž…๋‹ˆ๋‹ค.
์•„์ด์Šค๋ผ๋–ผ ์‹œ๋Ÿฝ ๋‘ํŽŒํ”„ ๋„ฃ์–ด์„œ ์ฃผ์„ธ์š”. โžก๏ธโฌ…๏ธ์•„์ด์Šค๋ผ๋–ผ์— ์‹œ๋Ÿฝ ๋‘ํŽŒํ”„, ์–ด๋–ป๊ฒŒ ๊ฒฐ์ œ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
์•„์ด์Šค๋ผ๋–ผ,์‹œ๋Ÿฝ ๋‘ํŽŒํ”„๋„ฃ์–ด์„œ ์ฃผ์„ธ์š”,์นด๋“œ๋กœ ๊ฒฐ์ œํ• ๊ป˜์š” โžก๏ธโฌ…๏ธ ์•„์ด์Šค๋ผ๋–ผ,์‹œ๋Ÿฝ ๋‘ํŽŒํ”„,์นด๋“œ ๊ฒฐ์ œ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

3.Request/Response

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

1

start Line : ์ฒซ๋ฒˆ์งธ ์ค„

- HTTP Method : ์š”์ฒญ์ด ์˜๋„ํ•œ ์•ก์…˜์˜ ์ •์˜ ๋ถ€๋ถ„.GET,POST,DELETE๋งŽ์ด ์‚ฌ์šฉ๋จ
- Request target : '๋‚ด๊ฐ€ ์—ฌ๊ธฐ๋‹ค ์š”์ฒญ์„ ํ•  ๊ฒƒ์ด๋‹ค'๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ค€๋‹ค. ํ•ด๋‹น request๊ฐ€ ์ „์†ก๋˜๋Š” ๋ชฉํ‘œ url
- HTTP Version : ๋ง ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ๋˜๋Š” HTTP ๋ฒ„์ „์„ ๋œปํ•จ. ์ฃผ๋กœ 1.1๋ฒ„์ „์ด ๋„๋ฆฌ ์“ฐ์ž„.
์˜ˆ) ํ›ˆ๋ฏผ์ •์Œ(1.0)->...->ํ˜„์žฌ ์œ ํ–‰๋˜๋Š” ์ค„์ž„๋ง.

POST/login HTTP/1.1
(= ๊ฒŸ ๋ฉ”์†Œ๋“œ๋กœ ๋กœ๊ทธ์ธ ์ด๋ผ๋Š” ์š”์ฒญ ํƒ€๊ฒŸ์— HTTP 1.1 ๋ฒ„์ „์œผ๋กœ ์š”์ฒญ ๋ณด๋‚ด๊ฒ ๋‹ค.)

header =>meta data : ํ•ด๋‹น ์š”์ฒญ์— ํ•„์š”ํ•œ ์ถ”๊ฐ€์ •๋ณด(meta data)๋“ค์„ ๋‹ด์•„๋†“๋Š” ๋ถ€๋ถ„.

{key:value}๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.

Body : ํ•ด๋‹น ์š”์ฒญ์˜ ์‹ค์ œ ๋‚ด์šฉ

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

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

2

status Line : ์‘๋‹ต์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ„.

- HTTP version : HTTP ๋ฒ„์ „
- Status Code : ์‘๋‹ต ์ƒํƒœ์ฝ”๋“œ
- Status Text : ์‘๋‹ต์˜ ์ƒํƒœ๋ฅผ ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•˜๋Š” ํ…์ŠคํŠธ

HTTP/1.1 404 NotFound
HTTP/1.1 200 SUCCESS

header =>meta data : ์‘๋‹ต์˜ ์ถ”๊ฐ€ ์ •๋ณด(๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ)๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„.

{key:value}๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.

Body : ์‘๋‹ตํ•ด์ค„ ๋ฐ์ดํ„ฐ. ์š”์ฒญ์— ๋”ฐ๋ผ ์กด์žฌํ•˜์ง€ ์•Š์„์ˆ˜๋„ ์žˆ๋‹ค.

๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ JSON์ด๋‹ค.

02.HTTP RequestMethods

์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” HTTP ํ†ต์‹  ๋ฉ”์†Œ๋“œ ์„ธ๊ฐ€์ง€.(GET, POST, DELETE)๊ฐ€์ง€๋Š” ์˜๋„๋ฅผ ์•Œ์•„๋ณด์ž.

GET

  • ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ๋งŒ ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ
  • ์›นํŽ˜์ด์ง€์—์„œ ์ ‘์†ํ•ด์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์‚ฌ์šฉ
GET/shop/bag HTTP 1.1

์˜ˆ)์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด์€ ๋ชฉ๋ก์„ ์กฐํšŒ

HTTP/1.1 200 OK (์„ฑ๊ณต!)

์˜ˆ)์‘๋‹ต : ์•Œ์•˜์–ด.์„ฑ๊ณต!

POST

  • ์ •๋ณด๋ฅผ ๋‹ด์•„์„œ ๋ณด๋‚ธ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ƒ์„ฑ/์ˆ˜์ • ํ• ๋•Œ ์‚ฌ์šฉ
  • ๋ฐ”๋””๊ฐ€ ๋‹ด๊ฒจ์„œ ๊ฐ„๋‹ค! ๋ฐ”๋””๋‚ด์šฉ์ด ํ•ต์‹ฌ!
POST/shop/bag HTTP1.1

์˜ˆ)์š”์ฒญ-์•„์ดํŒจ๋“œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๊ธฐ

HTTP/1.1 201 Created 

์˜ˆ)์‘๋‹ต-์š”์ฒญ ์„ฑ๊ณตํ–ˆ๊ณ  ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋งŒ๋“ค์–ด์กŒ๋‹ค.

DELETE

  • ์„œ๋ฒ„์— ์ €์žฅ๋œ ํŠน์ • ๋ฐ์ดํ„ฐ ์‚ญ์ œ์‹œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ
DELETE/shop/bag HTTP1.1

์˜ˆ)์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ์ œํ’ˆ์„ ์‚ญ์ œํ•œ๋‹ค.

HTTP/1.1 204 No Content (์š”์ฒญ์„ฑ๊ณตํ–ˆ์œผ๋‚˜ ๋‚ด์šฉ์€ ์—†๋‹ค)

์˜ˆ)์š”์ฒญ์€ ์„ฑ๊ณตํ–ˆ์œผ๋‚˜ ๋‚ด์šฉ(body-content)์€ ์—†๋‹ค

โœ… Status Code

Success
200 : OK (์„ฑ๊ณต!)
201 : Created (์ž˜ ์ƒ์„ฑ๋์„๋•Œ)
204 : No Content(์ž˜ ์ƒ์„ฑ๋์ง€๋งŒ ๋ฐ”๋””(content)๊ฐ€ ์—†๋‹ค)

Error
400:Bad Request (์œ ์ €๊ฐ€ ์ž˜๋ชป๋ณด๋ƒˆ์„๋•Œ)
401:Unauthorized (๊ถŒํ•œ์ด ์—†๋Š”,๋„ˆ ๋ˆ„๊ตฌ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๋Š”๋ฐ? ์ธ์ฆ๋˜์ง€์•Š์Œ!๋„ˆ ๋ˆ„๊ตฌ์•ผ?)
403:Forbidden (์ ‘๊ทผ๊ธˆ์ง€! ๋‚˜ ๋„ˆ๋ˆ„๊ตฐ์ง€ ์•„๋Š”๋ฐ ๋„Œ ๊ถŒํ•œ ์—†์–ด!!)
404:Not Found (url ์—†์–ด...๋„ˆ๊ฐ€ ์ฐพ๋Š”๊ฑฐ ์—†์–ด)

Server Error
500: Internal Server Error (์„œ๋ฒ„์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ์„ ๊ฒฝ์šฐ)

profile
์ข‹์•„ํ•˜๋Š” ๊ฒƒ์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฑ„์›Œ๊ฐ€๋ฉด ํ–‰๋ณตํ•ด์งˆ๊บผ์•ผ

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