๐ŸŒฑ HTTP!

sh_awtylol4ยท2022๋…„ 6์›” 28์ผ
0

๐ŸŒฑ Today I Learn

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

๐Ÿค” HTTP?

HTTP๋Š” ํ•˜์ดํผ ํ…์ŠคํŠธ ์ „์†ก ํ”„๋กœํ† ์ฝœ์˜(Hypertext Transfer Protocol)์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๋“ค ์‚ฌ์ด์—์„œ ํ†ต์‹ ์„ ์ฃผ๊ณ ๋ฐ›๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.

โญ๏ธ HTTP ํ”„๋กœํ† ์ฝœ ํŠน์ง•

HTTP ํ”„๋กœํ† ์ฝœ์€ ์ƒํƒœ๊ฐ€ ์—†๋Š” (Stateless) ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. '์—ฌ๊ธฐ์„œ ์ƒํƒœ๊ฐ€ ์—†๋‹ค'๋Š” ๋ง์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ ์š”์ฒญ์ด ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ๊ด€๋ฆฌ๊ฐ€ ๋œ๋‹ค๋Š” ๋ง์ž…๋‹ˆ๋‹ค. ์ข€ ๋” ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ์ด์ „ ๋ฐ์ดํ„ฐ ์š”์ฒญ๊ณผ ๋‹ค์Œ ๋ฐ์ดํ„ฐ ์š”์ฒญ์ด ์„œ๋กœ ๊ด€๋ ค์ด ์—†๋‹ค๋Š” ๋ง์ž…๋‹ˆ๋‹ค.

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

HTTP ํ”„๋กœํ† ์ฝœ์€ ์ผ๋ฐ˜์ ์œผ๋กœ TCP/IP ํ†ต์‹  ์œ„์—์„œ ๋™์ž‘ํ•˜๋ฉฐ ๊ธฐ๋ณธ ํฌํŠธ๋Š” 80๋ฒˆ์ž…๋‹ˆ๋‹ค.

๐Ÿ‘ HTTP Request & Response

๐Ÿค— ํด๋ผ์ด์–ธํŠธ(Client) ์š”์ฒญ = HTTP Request ( URL + ์š”์ฒญ ๋ฉ”์„œ๋“œ)

๐Ÿ“€ ์„œ๋ฒ„(Server)์˜ ์‘๋‹ต = HTTP Response ( ์ƒํƒœ์ฝ”๋“œ + ์‘๋‹ต Body)

URL

URL(Uniform Resource Locators)์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ์ด๋ฏธ ์šฐ๋ฆฌ์—๊ฒŒ ์ต์ˆ™ํ•œ ์šฉ์–ด์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„์— ์ž์›์„ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด ์ž…๋ ฅํ•˜๋Š” ์˜๋ฌธ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๋ž˜๋„ ์ˆซ์ž๋กœ ๋˜์–ด ์žˆ๋Š” IP ์ฃผ์†Œ๋ณด๋‹ค ํ›จ์”ฌ ๊ธฐ์–ตํ•˜๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

URL์˜ ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ

์•ž์—์„œ ์‚ดํŽด๋ณธ URL์„ ์ด์šฉํ•˜๋ฉด ์„œ๋ฒ„์— ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์š”์ฒญํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ํŠน์ • ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ๋ฐ”๋กœ HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ(Http Request Methods)๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ๋Š” HTTP Verbs๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ์šฐ๋ฉฐ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ์š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • GET : ์กด์žฌํ•˜๋Š” ์ž์›์— ๋Œ€ํ•œ ์š”์ฒญ
  • POST : ์ƒˆ๋กœ์šด ์ž์›์„ ์ƒ์„ฑ
  • PUT : ์กด์žฌํ•˜๋Š” ์ž์›์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ
  • DELETE : ์กด์žฌํ•˜๋Š” ์ž์›์— ๋Œ€ํ•œ ์‚ญ์ œ

์ด์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์กฐํšŒ, ์ƒ์„ฑ, ๋ณ€๊ฒฝ, ์‚ญ์ œ ๋™์ž‘์„ HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ๋•Œ์— ๋”ฐ๋ผ์„œ๋Š” POST ๋ฉ”์„œ๋“œ๋กœ PUT, DELETE์˜ ๋™์ž‘๋„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP ์ƒํƒœ ์ฝ”๋“œ

์•ž์—์„œ ์‚ดํŽด๋ณธ URL๊ณผ ์š”์ฒญ ๋ฉ”์„œ๋“œ๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„ค์ •ํ•ด์•ผ ํ•  ์ •๋ณด๋ผ๋ฉด HTTP ์ƒํƒœ ์ฝ”๋“œ(HTTP Status Code)๋Š” ์„œ๋ฒ„์—์„œ ์„ค์ •ํ•ด์ฃผ๋Š” ์‘๋‹ต(Response) ์ •๋ณด์ž…๋‹ˆ๋‹ค.

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

2xx - ์„ฑ๊ณต

200๋ฒˆ๋Œ€์˜ ์ƒํƒœ ์ฝ”๋“œ๋Š” ๋Œ€๋ถ€๋ถ„ ์„ฑ๊ณต์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • 200 : GET ์š”์ฒญ์— ๋Œ€ํ•œ ์„ฑ๊ณต
  • 204 : No Content. ์„ฑ๊ณตํ–ˆ์œผ๋‚˜ ์‘๋‹ต ๋ณธ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ
  • 205 : Reset Content. ์„ฑ๊ณตํ–ˆ์œผ๋‚˜ ํด๋ผ์ด์–ธํŠธ์˜ ํ™”๋ฉด์„ ์ƒˆ๋กœ ๊ณ ์นจํ•˜๋„๋ก ๊ถŒ๊ณ 
  • 206 : Partial Content. ์„ฑ๊ณตํ–ˆ์œผ๋‚˜ ์ผ๋ถ€ ๋ฒ”์œ„์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ˜ํ™˜

3xx - ๋ฆฌ๋‹ค์ด๋ ‰์…˜

300๋ฒˆ๋Œ€์˜ ์ƒํƒœ ์ฝ”๋“œ๋Š” ๋Œ€๋ถ€๋ถ„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด์ „ ์ฃผ์†Œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜์—ฌ ์„œ๋ฒ„์—์„œ ์ƒˆ URL๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฅผ ์œ ๋„ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

  • 301 : Moved Permanently, ์š”์ฒญํ•œ ์ž์›์ด ์ƒˆ URL์— ์กด์žฌ
  • 303 : See Other, ์š”์ฒญํ•œ ์ž์›์ด ์ž„์‹œ ์ฃผ์†Œ์— ์กด์žฌ
  • 304 : Not Modified, ์š”์ฒญํ•œ ์ž์›์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ ์บ์‹ฑ๋œ ์ž์›์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ถŒ๊ณ , ETag์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ

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

400๋ฒˆ๋Œ€ ์ƒํƒœ ์ฝ”๋“œ๋Š” ๋Œ€๋ถ€๋ถ„ ํด๋ผ์ด์–ธํŠธ์˜ ์ฝ”๋“œ๊ฐ€ ์ž˜๋ชป๋œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์œ ํšจํ•˜์ง€ ์•Š์€ ์ž์›์„ ์š”์ฒญํ–ˆ๊ฑฐ๋‚˜ ์š”์ฒญ์ด๋‚˜ ๊ถŒํ•œ์ด ์ž˜๋ชป๋œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ต์ˆ™ํ•œ ์ƒํƒœ ์ฝ”๋“œ๋Š” 404 ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์š”์ฒญํ•œ ์ž์›์ด ์„œ๋ฒ„์— ์—†๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

  • 400 : Bad Request, ์ž˜๋ชป๋œ ์š”์ฒญ
  • 401 : Unauthorized, ๊ถŒํ•œ ์—†์ด ์š”์ฒญ. Authorization ํ—ค๋”๊ฐ€ ์ž˜๋ชป๋œ ๊ฒฝ์šฐ
  • 403 : Forbidden, ์„œ๋ฒ„์—์„œ ํ•ด๋‹น ์ž์›์— ๋Œ€ํ•ด ์ ‘๊ทผ ๊ธˆ์ง€
  • 405 : Method Not Allowed, ํ—ˆ์šฉ๋˜์ง€ ์•Š์€ ์š”์ฒญ ๋ฉ”์„œ๋“œ
  • 409 : Conflict, ์ตœ์‹  ์ž์›์ด ์•„๋‹Œ๋ฐ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒฝ์šฐ. ex) ํŒŒ์ผ ์—…๋กœ๋“œ ์‹œ ๋ฒ„์ „ ์ถฉ๋Œ

5xx - ์„œ๋ฒ„ ์—๋Ÿฌ

500๋ฒˆ๋Œ€ ์ƒํƒœ ์ฝ”๋“œ๋Š” ์„œ๋ฒ„ ์ชฝ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

  • 501 : Not Implemented, ์š”์ฒญํ•œ ๋™์ž‘์— ๋Œ€ํ•ด ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ
  • 503 : Service Unavilable, ์„œ๋ฒ„๊ฐ€ ๊ณผ๋ถ€ํ•˜ ๋˜๋Š” ์œ ์ง€ ๋ณด์ˆ˜๋กœ ๋‚ด๋ ค๊ฐ„ ๊ฒฝ์šฐ.
profile
ํฌ๊ธฐํ•˜๋Š” ๊ทธ ์ˆœ๊ฐ„์ด ๋ฐ”๋กœ ์‹œํ•ฉ์ข…๋ฃŒ์˜ˆ์š”...

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