[TIL] Web : HTTP

Acidยท2021๋…„ 9์›” 12์ผ
0

๐Ÿ•ธ๏ธ Web

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

HTTP ํ†ต์‹ ์˜ ๊ฐœ๊ด„์ ์ธ ๋‚ด์šฉ์ด๋ฉฐ Stateless, Request, Response, Status code ๋“ฑ์— ๋“ฑ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜Š

HTTP? ๐Ÿ“ถ

HTTP, ๋‹จ์–ด๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๋“ค์œผ๋ฉด ์ด๊ฒŒ ๋ญ”๊ฐ€ ์‹ถ์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์›น ์„œํ•‘์„ ํ•˜๋‹ค ์ฃผ์†Œ์ฐฝ์—์„œ ์‹ฌ์‹ฌ์น˜ ์•Š๊ฒŒ ์ด๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ๊ตณ์ด ์ด๊ฒƒ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค ํ•˜๋Š” ์ƒ๊ฐ์€ ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด HTTP๋Š” ๋ฌด์—‡์ธ๊ฐ€.

์•ž์„œ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ๋„คํŠธ์›Œํฌ ํŒจ๋„์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋ฉด์„œ HTTP Status์— ๋Œ€ํ•ด ์ž ์‹œ ์•Œ์•„๋ณธ ๋ฐ”๊ฐ€ ์žˆ๋‹ค. ์ด๋Š” ๋ฆฌ์†Œ์Šค์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์— ์žˆ์–ด ๊ทธ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ„๋‹จํžˆ ์ดํ•ดํ–ˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๋งฅ๋ฝ์—์„œ HTTP์˜ ์ •์˜๋ถ€ํ„ฐ ์•Œ์•„๋ณด์ž.

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

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜์—ฌ ๋ฐ›๊ณ  ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด์„  HTTP๋ฅผ ์•Œ์•„์•ผ๊ฒ ๋„ค์š”? ๐Ÿค”

๊ทธ๋ž˜์„œ ์ด์ œ HTTP๋Š” ์–ด๋–ค ํŠน์ง•์„ ๊ฐ–๋Š”์ง€, ์š”์ฒญ๊ณผ ์‘๋‹ต์€ ์–ด๋– ํ•œ ํ˜•์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ๋“ฑ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

HTTP์˜ ํŠน์ง• ๐Ÿ“ค


HTTP๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋˜ ๋‚ด์šฉ์„ ํฌํ•จํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค. ์šฐ์„  ๋Œ€๋ถ€๋ถ„์˜ ํŒŒ์ผ ํ˜•์‹๋“ค์„ HTTP ํ†ต์‹ ์„ ์ด์šฉํ•ด ์ „์†ก ๊ฐ€๋Šฅํ•˜๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ JSON, TEXT, IMAGE ํŒŒ์ผ๋“ค์„ ์ „์†กํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ์˜ ์ด๋™์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฐ”์™€ ๊ฐ™์ด ์š”์ฒญ๊ณผ ๊ทธ์— ๋”ฐ๋ฅธ ์‘๋‹ต์œผ๋กœ ์ด๋ฃจ์–ด์ง€๊ณ , ์‘๋‹ต๊ณผ ์š”์ฒญ์€ ๋ฌด์ƒํƒœ์™€ ๋น„์—ฐ๊ฒฐ์„ฑ์ด๋ผ๋Š” ํŠน์ง•์„ ๊ฐ–๋Š”๋‹ค.

Request & Response ๐Ÿ”›

HTTP ํ†ต์‹ ์€ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์ด์— ๋”ฐ๋ผ ์„œ๋ฒ„ ์ธก์—์„œ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์‘๋‹ต์„ ๋ณด๋‚ด๋Š” ํ˜•์‹์„ ๊ฐ–๋Š”๋‹ค. ๋‹น์—ฐํžˆ๋„ ์ด์— ๋Œ€ํ•œ ํ˜•์‹์ด ์กด์žฌํ•˜๊ณ  ์ด๋Ÿฌํ•œ ํ˜•์‹์— ๋งž์ถ”์ง€ ์•Š๊ณ  ๋ง˜๋Œ€๋กœ ์š”์ฒญ์„ ์ง„ํ–‰ํ•  ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค.
(์œ„ ์งค์ฒ˜๋Ÿผ ๋ฐ‘๋„ ๋๋„ ์—†์ด ๋‹ฌ๋ผ๊ณ  ํ•˜๋ฉด ๋ชป ์•Œ์•„๋จน๋Š”๋‹ค...๐Ÿ˜…)

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ๊ฐ๊ฐ์˜ ํ˜•์‹์— ๋Œ€ํ•ด ์ดํ•ดํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

Request


์š”์ฒญ(Request)์€ ํฌ๊ฒŒ StartLine , Headers , Body ์ธ ์„ธ ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. ๊ฐ๊ฐ์˜ ์˜์—ญ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.

  • StartLine : ์š”์ฒญ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„. ์š”์ฒญ์˜ ๊ฐœ๊ด„์ ์ธ ๋ถ€๋ถ„์— ํ•ด๋‹นํ•œ๋‹ค.
    = HTTP method / Request Target / HTTP version
  • Headers : ์š”์ฒญ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ธฐ๋ฉฐ ๊ฐ์ฒด ํ˜•ํƒœ๋ฅผ ๊ฐ–๋Š”๋‹ค.
    = Headers { Host : ~, User-Agent : ~ ... }
  • Body : ์š”์ฒญ์˜ ์ƒ์„ธ ๋‚ด์šฉ์— ํ•ด๋‹นํ•œ๋‹ค. ์—ญ์‹œ ๊ฐ์ฒด ํ˜•ํƒœ๋ฅผ ๊ฐ–๋Š”๋‹ค. Headers ์™€ ์œ ์‚ฌํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. Body ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฉ”์„œ๋“œ๋„ ์žˆ๋‹ค.(ex) Get)
    = Body { Host : ~, User-Agent : ~ ... }

Response


์‘๋‹ต(Response) ๋˜ํ•œ ์š”์ฒญ๊ณผ ๊ฐ™์ด StartLine , Headers , Body ์ธ ์„ธ ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋˜๊ณ , ๋‚ด์šฉ ๋˜ํ•œ ๋Œ€์ฒด๋กœ ์œ ์‚ฌํ•˜๋‹ค.

  • StartLine : ์‘๋‹ต์˜ ์ฒซ ๋ฒˆ์งธ ์ค„. ์‘๋‹ต ์ƒํƒœ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ๋‚ด์šฉ์„ ํฌํ•จํ•œ๋‹ค.
    = HTTP version / Status Code / Status Text
  • Headers : ์‘๋‹ต์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ธฐ๋ฉฐ ๊ฐ์ฒด ํ˜•ํƒœ๋ฅผ ๊ฐ–๋Š”๋‹ค.
    = Headers { Connection : ~, Content-Length : ~ ... }
  • Body : ์‘๋‹ต์˜ ์ƒ์„ธ ๋‚ด์šฉ์— ํ•ด๋‹นํ•˜๋ฉฐ, ์—ญ์‹œ ๊ฐ์ฒด ํ˜•ํƒœ๋ฅผ ๊ฐ–๋Š”๋‹ค. ์š”์ฒญ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ๋žต๋  ์ˆ˜๋„ ์žˆ๋‹ค.


์œ„์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š” ์š”์ฒญ๊ณผ ์‘๋‹ต์€ ๋‹ค์Œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์ง„ํ–‰๋œ๋‹ค.

๐Ÿ’ก HTTP Method

HTTP ํ†ต์‹ ์—์„œ ์–ด๋– ํ•œ ๋ชฉ์ ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฅธ HTTP Method๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค. ๋‹ค์–‘ํ•œ Method๊ฐ€ ์žˆ์ง€๋งŒ, ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” GET ๊ณผ POST ๋ฅผ ๋น„๊ตํ•˜๋ฉด์„œ ์•Œ์•„๋ณด์ž.

์šฐ์„  GET์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ์„ ๋•Œ, HTTP Code 200 OK๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋˜ํ•œ GET ์š”์ฒญ์€ idempotent(๋ฉฑ๋“ฑ์„ฑ) ํ•œ๋ฐ ์ด๋Š” ๊ฐ™์€ ์š”์ฒญ์„ ํ•˜๋”๋ผ๋„ ๋งค๋ฒˆ ๊ฐ™์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ GET ์„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋“ฑ์˜ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์—ฐ์‚ฐ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ง€์–‘ํ•œ๋‹ค.

๋ฐ˜๋ฉด์— POST ์˜ ๊ฒฝ์šฐ, ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค์˜ ์ƒ์„ฑ์— ์‚ฌ์šฉ๋œ๋‹ค. ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ๋ถ€๋ชจ ์š”์†Œ์˜ ํ•˜์œ„ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ์— ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๋ง์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— POST ๋Š” ์„ฑ๊ณต์ ์œผ๋กœ ์™„์ˆ˜ํ•˜๋ฉด 201 Created ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  POST ๋ฉ”์„œ๋“œ๋Š” GET ๊ณผ ๋ฐ˜๋Œ€๋กœ idempotent ํ•˜์ง€ ์•Š๊ธฐ์— ๊ฐ™์€ POST ์š”์ฒญ์„ ๋ฐ˜๋ณตํ•ด๋„ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ํ™•์‹ ํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ฐ™์€ POST ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

๋ณด๋‹ค ๋” ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์€ Request methods์— ๋Œ€ํ•œ ๋ช…์„ธ์™€ w3schools.com์˜ GET method vs POST method๋ฅผ ์ฐธ์กฐํ•˜์ž.


Connectionless


์š”์ฒญ๊ณผ ์‘๋‹ต์— ์žˆ์–ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•œ ์ดํ›„ ๊ณผ์ •์ด ๋๋‚˜๋ฉด ๋™์‹œ์— ์—ฐ๊ฒฐ์„ ๋Š์–ด๋ฒ„๋ฆฐ๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ–๋Š”๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ์—ฐ๊ฒฐ์„ ๊ตณ์ด ๋Š์–ด์•ผ๋งŒ ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?

์„œ๋ฒ„๋Š” ๋ถˆํŠน์ • ๋‹ค์ˆ˜์˜ ํด๋ผ์ด์–ธํŠธ์™€ ํ†ต์‹ ์„ ํ•ด์•ผํ•˜๋Š” ํ™˜๊ฒฝ์„ ๊ฐ–๋Š”๋ฐ ๋งŒ์•ฝ ์ด ์—ฐ๊ฒฐ์„ ๊ณ„์† ์œ ์ง€ํ•œ๋‹ค๋ฉด, ์ด์™€ ํ•จ๊ป˜ ๋ฐœ์ƒํ•˜๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ๋Š˜์–ด๋‚  ๊ฒƒ์ด๊ณ  ์—ฐ๊ฒฐ์˜ ์ˆ˜ ๋˜ํ•œ ๊ฐ์†Œํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌํ•œ ์ด์œ  ๋•Œ๋ฌธ์— HTTP ํ†ต์‹ ์€ ๋น„์—ฐ๊ฒฐ์„ฑ์„ ๊ฐ–๋Š”๋‹ค.

์ด๋ ‡๊ฒŒ ๋“ค์œผ๋ฉด ๋น„์—ฐ๊ฒฐ์„ฑ์ด ๋‹จ์ ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ, ๋ฐ˜๋ณต์ ์œผ๋กœ ์—ฐ๊ฒฐ ๋ฐ ํ•ด์ œ์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•˜๊ธฐ์—, ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์  ๋˜ํ•œ ๊ฐ–๊ณ  ์žˆ๋‹ค.

Stateless

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋น„์—ฐ๊ฒฐ์„ฑ์œผ๋กœ ์ธํ•ด ๊ฐ๊ฐ์˜ ์š”์ฒญ์€ ๊ตฌ๋ถ„๋˜์–ด ์„œ๋ฒ„์—๊ฒŒ ๋…๋ฆฝ์ ์ธ ๋Œ€์ƒ์œผ๋กœ ์ทจ๊ธ‰ ๋ฐ›๋Š”๋‹ค. ์ด ๋ง์ด ๋ฌด์Šจ ๋ง์ด๋ƒ๋ฉด, ๋ฐ”๋กœ ์ด์ „์— ๋ณด๋‚ธ ์š”์ฒญ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ด์ „์˜ ์š”์ฒญ๊ณผ ์—ฐ๊ด€์„ฑ์„ ๊ฐ–์ง€ ๋ชปํ•˜๋ฉฐ, ์„œ๋กœ ๊ฐ„ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์ด ์กด์žฌํ•œ๋‹ค.

// Request/Response 1
Client -- '๋‚˜๋Š” ์œ ์ € "a" ์•ผ ๋กœ๊ทธ์ธ ํ•  ์ˆ˜ ์žˆ๋‹ˆ?' --> Server
Server -- '์•Œ๊ฒ ์–ด, ํ™•์ธํ•˜๊ณ  ์‹œ์ผœ์ค„๊ฒŒ' --> Client

// Request/Response 2
Client -- '์ „์— ์™”๋˜, ์œ ์ € "a" ์•ผ ๋กœ๊ทธ์ธ ์‹œ์ผœ์ค˜' --> Server
Server -- '๋„ˆ๊ฐ€ ๋ˆ„๊ตฐ๋ฐ, ๋‚œ "a" ๋ชฐ๋ผ' --> Client


์•ž์˜ ์š”์ฒญ์—์„œ ์œ ์ € a ๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜์—ฌ ๋กœ๊ทธ์ธ์„ ์š”์ฒญํ•˜์˜€๊ณ , ์ด์— ๋”ฐ๋ผ ๋กœ๊ทธ์ธ์ด ๋˜์—ˆ์ง€๋งŒ ๋‹ค์‹œ ๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ํ•  ๋•Œ, ์ „์— ์žˆ๋˜ ์œ ์ € a ๊ฐ€ ๋ฐฉ๋ฌธํ–ˆ๋˜ ๊ธฐ๋ก์„ ๋‹ค์‹œ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ–ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ์š”์ฒญ ๊ฐ„์—๋Š” ๋…๋ฆฝ์„ฑ์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋งค ์—ฐ๊ฒฐ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ๋‹จ์ ์ด ์กด์žฌํ•  ๊ฒƒ์ด๋‹ค.

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


HTTP Status Code โ—

์œ„์—์„œ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ, ์ ์ ˆํ•œ ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ ์‘๋‹ต์— ํฌํ•จ๋˜์–ด ์˜ค๋Š” ์ •๋ณด ์ค‘, HTTP ํ†ต์‹ ์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ƒํƒœ ์ฝ”๋“œ์˜ ์œ ํ˜•์€ ์•„์ฃผ ๋‹ค์–‘ํ•˜์ง€๋งŒ, ๊ทธ ์ค‘ ๊ฐ„๋žตํ•˜๊ฒŒ ๊ตฌ๋ถ„์ง€์–ด ๋ช‡ ๊ฐ€์ง€๋งŒ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

์š”์ฒญ ์„ฑ๊ณต


์•„๋ž˜์˜ ์ƒํƒœ ์ฝ”๋“œ๋“ค์€ ์š”์ฒญ์— ์˜ํ•ด ์—ฐ๊ฒฐ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ง„ํ–‰๋˜๊ฑฐ๋‚˜, ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ „์†ก๋œ ๊ฒฝ์šฐ ๋“ฑ์„ ์˜๋ฏธํ•œ๋‹ค.

  • 200 OK : ์„ฑ๊ณต์ ์œผ๋กœ ์‘๋‹ต
  • 201 Created : ์„ฑ๊ณต์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ

ํด๋ผ์ด์–ธํŠธ ์—๋Ÿฌ


์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๋ถ€๋ถ„์ด ์š”์ฒญ ๋ถ€๋ถ„์—์„œ ์ž˜๋ชป๋œ ๊ฒƒ์œผ๋กœ, ์ฃผ๋กœ ํ”„๋ก ํŠธ์—”๋“œ ๋‹จ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ณด์ด๋Š” ์‘๋‹ต ์ฝ”๋“œ๋‹ค.

  • 400 Bad Request : ์œ ํšจํ•˜์ง€ ์•Š๋Š” ์š”์ฒญ
  • 401 Unauthorized : ๋ฆฌ์†Œ์Šค ์š”์ฒญ์— ๋Œ€ํ•œ ์ธ์ฆ์ž๊ฒฉ ๋ถ€์กฑ
  • 403 Forbidden : ์š”์ฒญ์„ ์ดํ•ดํ–ˆ์ง€๋งŒ ์Šน์ธ์„ ๊ฑฐ๋ถ€
  • 404 Not Found : ์„œ๋ฒ„๊ฐ€ ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ

์„œ๋ฒ„ ์—๋Ÿฌ


์˜ค๋ฅ˜๊ฐ€ ์„œ๋ฒ„ ์ธก์—์„œ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ๋‚˜ํƒ€๋‚˜๋Š” ์‘๋‹ต ์ฝ”๋“œ๋กœ, ์ฃผ๋กœ ๋ฐฑ์—”๋“œ ๋‹จ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‚˜ํƒ€๋‚˜๋Š” ์‘๋‹ต ์ฝ”๋“œ๋‹ค.

  • 500 Internal Server Error : ๋‚ด๋ถ€ ์„œ๋ฒ„ ์˜ค๋ฅ˜๋กœ ์š”์ฒญ์„ ์ดํ–‰ํ•˜์ง€ ๋ชปํ•จ
  • 501 Not Implemented : ์š”์ฒญ ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์„œ๋ฒ„๊ฐ€ ์ง€์›ํ•˜์ง€ ์•Š์Œ

๋งˆ๋ฌด๋ฆฌ ๐Ÿงพ


์˜ค๋Š˜๋„ ์–ด๊น€์—†์ด ๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ ์‹œ๊ฐ„์ด ๋Œ์•„์™”๋‹ค. HTTP์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋ฉด์„œ ๋งˆ๋ฌด๋ฆฌํ•˜์ž.

  • HTTP๋ž€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ทœ์ •ํ•œ ๊ทœ์•ฝ์ด๋‹ค.
  • HTTP๋Š” ์š”์ฒญ(Request)๊ณผ ์‘๋‹ต(Response)์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ ์š”์ฒญ๊ณผ ์‘๋‹ต์€ StartLine , Headers , Body ๊ตฌ๋ถ„๋˜๋Š” ํ˜•์‹์„ ๊ฐ–๋Š”๋‹ค.
  • HTTP๋Š” ๋น„์—ฐ๊ฒฐ์„ฑ(Connectionless)๊ณผ ๋ฌด์ƒํƒœ(Stateless)์˜ ํŠน์ง•์„ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ข… ์Šคํ† ๋ฆฌ์ง€์™€ ์ฟ ํ‚ค๋ฅผ ํ™œ์šฉํ•œ๋‹ค.
  • HTTP ํ†ต์‹  ์ƒํƒœ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์‘๋‹ต ์ฝ”๋“œ(HTTP Status Code)๊ฐ€ ์กด์žฌํ•˜๋ฉฐ ๊ฐ ์ฝ”๋“œ๋งˆ๋‹ค ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ์‹คํŒจ์˜ ๋‚ด์šฉ์„ ํฌํ•จํ•œ๋‹ค.

๐Ÿ”– ์ถœ์ฒ˜

HTTP : wikipedia : HTTP
HTTP ํŠน์ง• : kotlinworld : HTTP(HyperText Transfer Protocol)์˜ ํŠน์ง•
HTTP Status Code : MDN Web Docs : HTTP ์ƒํƒœ ์ฝ”๋“œ

profile
์ด์œ ์— ์ง‘์ฐฉํ•˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ง€๋ง์ƒ์ž…๋‹ˆ๋‹ค ๐Ÿง

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