WEB Architecture โŽฎ HTTP & AJAX

NOWANDHEREยท2020๋…„ 11์›” 14์ผ
0

WEB

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

WEB Architecture

๐ŸŒป ์›น ์•„ํ‚คํ…์ฒ˜์—์„œ ๊ฐ ํ‚ค์›Œ๋“œ๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” ๋ฌด์—‡์ผ๊นŒ?


HTTP


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

ํ”„๋กœํ† ์ฝœ(Protocol)์€ ์ปดํ“จํ„ฐ ๋‚ด๋ถ€ ๋˜๋Š” ์ปดํ“จํ„ฐ ๊ฐ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ๊ตํ™˜๋˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ๊ทœ์น™ ์‹œ์Šคํ…œ์ด๋‹ค. ๊ธฐ๊ธฐ๊ฐ„ ํ†ต์‹ ์€ ๊ตํ™˜๋˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์— ๋Œ€ํ•ด ์„œ๋กœ๊ฐ„์˜ ์ƒํ˜ธ ํ•ฉ์˜๋ฅผ ์š”๊ตฌ("๋‚œ ์ด๋Ÿฐ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ค„ํ…Œ๋‹ˆ ๋„Œ ์ด๋Ÿฐ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ค˜"์™€ ๊ฐ™์€ ์•ฝ์†์„ ํ•„์š”๋กœ ํ•œ๋‹ค)ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜•์‹์„ ์ •์˜ํ•˜๋Š” ๊ทœ์น™์˜ ์ง‘ํ•ฉ์„ ํ”„๋กœํ† ์ฝœ์ด๋ผ๊ณ  ํ•œ๋‹ค.

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


HTTP ์ž‘๋™ ๋ฐฉ์‹

HTTP๋Š” ์›น์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๊ตํ™˜์˜ ๊ธฐ์ดˆ์ด๋‹ค. ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

HTTP๋Š” ํ•ญ์ƒ ์š”์ฒญ์— ์‘๋‹ต์„ ํ•˜๋Š” ๊ทœ์น™์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ(Request)์„ ํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์‘๋‹ต(Response)์„ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฉ”์„ธ์ง€๋ฅผ ๋‹ฌ๋ผ๋Š” ์š”์ฒญ์„ ํ•˜๋ฉด ์„œ๋ฒ„๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๋Š” ํ˜•ํƒœ๋กœ ์‘๋‹ตํ•œ๋‹ค.

๊ฐ€๋ น ์‚ฌ์ง„์„ ๋‹ฌ๋ผ๋Š” ์š”์ฒญ์„ ํ–ˆ์„ ๋•Œ, ์‚ฌ์ง„์ด ์—†๋‹ค๋ฉด ์„œ๋ฒ„๋Š” ๋ฐ˜๋“œ์‹œ ์—†๋‹ค๋Š” ์‘๋‹ต์„ ์ค˜์•ผ ํ•œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ, ์‚ฌ์ง„์ด ์—†๋‹ค๊ณ  ํ•ด์„œ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ๋ฌด์‹œํ•˜๊ณ  ์•„๋ฌด๋Ÿฐ ์‘๋‹ต์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.


HTTP ๊ตฌ์„ฑ

HTTP ์š”์ฒญ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ—ค๋”์™€ ๋ฐ”๋””๋ฅผ ๊ฐ€์ง„๋‹ค. ํ—ค๋”์—๋Š” ๋ณดํ†ต ์–ด๋””์„œ ๋ณด๋‚ด๋Š” ์š”์ฒญ์ธ๊ฐ€, ์ปจํ…์ธ  ํƒ€์ž…์€ ๋ฌด์—‡์ธ๊ฐ€, ์–ด๋–ค ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ด์šฉํ•ด ๋ณด๋ƒˆ๋Š”๊ฐ€(์–ด๋–ค OS์—์„œ ์–ด๋–ค ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ๋ณด๋ƒˆ๋Š”๊ฐ€)์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค. ๋ฐ”๋””๋Š” ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋„ ์žˆ๊ณ  ์•„๋‹Œ ๋ฉ”์†Œ๋“œ๋“ค๋„ ์žˆ๋‹ค. ๋ฐ”๋””์—๋Š” ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ์žˆ๋Š” ๊ณต๊ฐ„์œผ๋กœ ํ™œ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

์‘๋‹ต๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ—ค๋”์™€ ๋ฐ”๋””๋ฅผ ๊ฐ€์ง„๋‹ค.


HTTP์˜ ๋Œ€ํ‘œ์ ์ธ ์†์„ฑ

stateless

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

ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ผ๊ฒน์‚ด์„ ๋จน์œผ๋Ÿฌ ๊ฐ€์ž๊ณ  ํ–ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋จน์œผ๋Ÿฌ ๊ฐ€์ž๊ณ  ์š”์ฒญ์„ ๋ณด๋‚ด๋„ ์ด ์š”์ฒญ์€ ์•ž์—์„œ ์‚ผ๊ฒน์‚ด์„ ๋จน์ž๊ณ  ํ–ˆ๋˜ ์š”์ฒญ๊ณผ๋Š” ๋ณ„๊ฐœ์˜ ์š”์ฒญ์ด๋ฏ€๋กœ ์„œ๋ฒ„๋Š” ์•Œ์•„๋“ฃ์ง€ ๋ชปํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. HTTP์˜ ๋งค ์š”์ฒญ์€ ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— state๋ผ๋Š” ๊ฒƒ์ด ์—†๋‹ค. ์ด๊ฒƒ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ถ”ํ›„์— ์ธ์ฆ์ด๋ผ๋Š” ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์น˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.


connectionless

๋‹น์—ฐํ•˜๊ฒ ์ง€๋งŒ HTTP๋Š” ํ•œ ๋ฒˆ์˜ ์š”์ฒญ์— ํ•œ ๋ฒˆ์˜ ์‘๋‹ต์„ ํ•˜๊ฒŒ ๋œ๋‹ค. connectionless๋ผ๋Š” ๊ฒƒ์€ ํ•œ ๋ฒˆ์˜ ์š”์ฒญ๊ณผ ํ•œ ๋ฒˆ์˜ ์‘๋‹ต์ด ์ด๋ฃจ์–ด์กŒ๋‹ค๊ณ  ํ•ด์„œ ์ด ์—ฐ๊ฒฐ์ด ์ง€์†ํ•ด์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ์‘๋‹ตํ•˜๋Š” ์ˆœ๊ฐ„ ์—ฐ๊ฒฐ์€ ์ข…๋ฃŒ๋˜๊ณ , ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ๋”๋Š” ์‘๋‹ต์„ ํ•  ์ˆ˜ ์—†๊ฒŒ ๋ ๋ฟ๋”๋Ÿฌ ์œ„ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์‘๋‹ต์„ ๋‘ ๋ฒˆ ๋ณด๋‚ผ ์ˆ˜๋Š” ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.


HTTP Method

HTTP๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ 4๊ฐ€์ง€์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

  • GET : ์„œ๋ฒ„์— ์ž์›์„ ์š”์ฒญ.
  • POST : ์„œ๋ฒ„์— ์ž์›์„ ์ƒ์„ฑ.
  • PUT : ์„œ๋ฒ„์˜ ์ž์›์„ ์ˆ˜์ •.
  • DELETE : ์„œ๋ฒ„์˜ ์ž์›์„ ์ œ๊ฑฐ.

HTTP Messages

HTTP messages์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ์˜ˆ์‹œ์— ๋Œ€ํ•œ ๊ทธ๋ฆผ์ด๋‹ค.

์š”์ฒญ์˜ ์˜ˆ

์š”์ฒญ์€ ๋‹ค์Œ์˜ ์š”์†Œ๋“ค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  • Method : HTTP ๋ฉ”์†Œ๋“œ, ๋ณดํ†ต ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋™์ž‘์„ ์ •์˜ํ•œ GET, POST ๊ฐ™์€ ๋™์‚ฌ๋‚˜ OPTIONS๋‚˜, HEAD์™€ ๊ฐ™์€ ๋ช…์‚ฌ์ด๋‹ค.
  • Path : ๊ฐ€์ ธ์˜ค๋ ค๋Š” ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ๋กœ์ด๊ณ  ํ”„๋กœํ† ์ฝœ(http://), ๋„๋ฉ”์ธ(์˜ˆ๋ฅผ ๋“ค์–ด, velog.io), ํฌํŠธ ๋“ฑ์˜ ์š”์†Œ๋“ค์„ ์ œ๊ฑฐํ•œ ๋ฆฌ์†Œ์Šค์˜ URL์ด๋‹ค.
  • Version of the protocol : HTTP์˜ ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „.
  • Headers : ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํ—ค๋”๋“ค.

์‘๋‹ต์˜ ์˜ˆ

  • Version of the protocol : HTTP ํ”„๋กœํ† ์ฝœ์˜ ๋ฒ„์ „.
  • Status code : ์š”์ฒญ์˜ ์„ฑ๊ณต ์—ฌ๋ถ€์™€, ๊ทธ ์ด์œ ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒํƒœ ์ฝ”๋“œ.
  • Status message : ์ƒํƒœ ์ฝ”๋“œ์˜ ์งง์€ ์„ค๋ช…์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒํƒœ ๋ฉ”์‹œ์ง€.
  • Headers : ์š”์ฒญ ํ—ค๋”์™€ ๋น„์Šทํ•œ, HTTP ํ—ค๋”๋“ค.

AJAX(Asynchronous JavaScript And XML)


์˜ˆ์ „์—๋Š” ๋กœ๊ทธ์ธ์„ ํ•  ๋•Œ, ์œ„ ์‚ฌ์ง„์ฒ˜๋Ÿผ form.html์ด๋ผ๋Š” ํŒŒ์ผ์—์„œ <form> ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด์„œ ์ •๋ณด๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์„œ๋ฒ„์— ์ œ์ถœํ•˜๊ฒŒ ๋˜๋ฉด, ์„œ๋ฒ„์—์„œ๋Š” result.html์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ์‘๋‹ตํ•ด์คฌ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ์•„์˜ˆ ๋‚ด๋ ค๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋ž˜๋„ ๋กœ๋”ฉ์‹œ๊ฐ„๋„ ๊ธธ๊ณ , ๋ณด์ด๋Š” ๋ถ€๋ถ„๋“ค์„ ์ „๋ถ€ ๋‹ค์‹œ ๋‹ค ๋ Œ๋”ํ•˜๋Š” ๊นœ๋นก์ž„ ํ˜„์ƒ์ด ์ผ์–ด๋‚œ๋‹ค.

๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ๋•Œ๋งˆ๋‹ค ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ถ€๋ถ„์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

๊ทธ๋ž˜์„œ ๋“ฑ์žฅํ•œ๊ฒƒ์ด Dynamic Web Page์ด๋‹ค. ์„œ๋ฒ„์™€ ์ž์œ ๋กญ๊ฒŒ ํ†ต์‹ ์„ ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ณ (XHR), ํŽ˜์ด์ง€ ๊นœ๋นก์ž„ ์—†์ด ์ž‘๋™ํ•˜๋Š”(JavaScript & DOM) ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด๋‹ค.

์ฆ‰, AJAX๋ž€ JavaScript์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ Asynchronous Javascript And Xml(๋น„๋™๊ธฐ์‹ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ xml)์˜ ์•ฝ์ž์ด๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด์„œ ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜์ง€ ์•Š๊ณ ๋„ ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋งŒ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋ฉฐ JavaScript๋ฅผ ์‚ฌ์šฉํ•œ ๋น„๋™๊ธฐ ํ†ต์‹ , ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์— XML ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ธฐ์ˆ ์ด๋‹ค.


Reference




๋ฐฐ์šฐ๋Š” ๋‹จ๊ณ„๋ผ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‹€๋ฆฐ ๋‚ด์šฉ์€ ๋Œ“๊ธ€ ๋‹ฌ์•„์ฃผ์‹œ๋ฉด ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)

profile
๐ŸŒป

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