๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ปWEB FrontEnd/JS

AJAX

AJAX (Asynchronous Javascript And XML)

๋น„๋™๊ธฐ์  ์›น ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•์œผ๋กœ, ํŽ˜์ด์ง€ ์ด๋™ ์—†์ด ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ฐ›๋Š” ๊ธฐ์ˆ ์ด๋‹ค.

 


AJAX๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„๋งŒ ๊ฐฑ์‹ ํ•  ๊ฒฝ์šฐ์—๋„ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•ด์•ผํ•˜๋Š”๋ฐ, ์ด๋•Œ ์—„์ฒญ๋‚œ ์ž์›๊ณผ ์‹œ๊ฐ„์ด ๋‚ญ๋น„๋œ๋‹ค.

ํ•˜์ง€๋งŒ ajax๋Š” html ํŽ˜์ด์ง€ ์ „์ฒด๊ฐ€์•„๋‹Œ ์ผ๋ถ€๋ถ„๋งŒ ๊ฐฑ์‹ ํ• ์ˆ˜ ์žˆ๋„๋ก XMLHttpRequest๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— requestํ•œ๋‹ค.

์ด ๊ฒฝ์šฐ Json์ด๋‚˜ xmlํ˜•ํƒœ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ›์•„ ๊ฐฑ์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋งŒํผ์˜ ์ž์›๊ณผ ์‹œ๊ฐ„์„ ์•„๋‚„ ์ˆ˜ ์žˆ๋‹ค.

 

AJAX์˜ ์žฅ๋‹จ์ 

์žฅ์ 
  • ์›นํŽ˜์ด์ง€์˜ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋œ๋‹ค.
  • JavaScript๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— JS์˜ ํŠน์ง•์ธ ๋น„๋™๊ธฐ์  ํ†ต์‹  ๊ฐ€๋Šฅ
    = ์„œ๋ฒ„์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
  • ์„œ๋ฒ„์—์„œ Data๋งŒ ์ „์†ก๋˜๋ฉด ๋˜๋ฏ€๋กœ ์ „์ฒด์ ์ธ ์ฝ”๋”ฉ์˜ ์–‘์ด ์ค„์–ด๋“ ๋‹ค.
  • ํŽ˜์ด์ง€ ๋ฆฌ๋กœ๋“œ ์—†์ด ์›น์˜ ์ผ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด ๊ธฐ์กด ์›น์—์„œ๋Š” ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜ ๋‹ค์–‘ํ•œ UI๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.
๋‹จ์ 
  • ํžˆ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ์•ˆ๋˜์–ด ๋ณด์•ˆ์— ์ข€ ๋” ์‹ ๊ฒฝ์„ ์จ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • ์—ฐ์†์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋ฉด ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

AJAX ๊ตฌํ˜„๋ฐฉ์‹

1) axios - npm๊ฒŒ์‹œ๋ฌผ

  • javascript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ npm install axios
  • ๋ธŒ๋ผ์šฐ์ €์˜ ๋ฒ„์ „์— ์ƒ๊ด€์—†์ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • node.js์—์„œ์˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • return ๊ฐ’์€ Promise ๊ฐ์ฒด ํ˜•ํƒœ์ด๋‹ค.
axios.post('request url', data)
  .then(function (res) {
    //...
  })

 

2) fetch

  • javascript ๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— importํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๋ฒ„์ „์ด ์žˆ๊ณ , ํ˜ธํ™˜์‹œํ‚ค๋ ค๋ฉด polyfill์„ ์‚ฌ์šฉํ•ด ํ˜ธํ™˜์„ฑ์„ ๋งž์ถฐ์•ผ ํ•œ๋‹ค.

    (fetch์™€ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „ ์ข…๋ฅ˜)

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์—…๋ฐ์ดํŠธ์— ๋”ฐ๋ฅธ ์—๋Ÿฌ ๋ฐฉ์ง€๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • response timeout API ์ œ๊ณต๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋„คํŠธ์›Œํฌ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ์— ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.
  • return ๊ฐ’์€ Promise ๊ฐ์ฒด ํ˜•ํƒœ์ด๋‹ค.
fetch('request url', {
  method: 'POST',
  body,
}).then((res) => {
  //...
});

 

3) fetch์™€ axios์˜ ์ฐจ์ด์ 

์ž˜ ์ •๋ฆฌ๋œ ๋ธ”๋กœ๊ทธ => blog.logrocket.com/axios-or-fetch-api/