MapleStory Finger Point

โšช ๊ฐœ๋… ์ •๋ฆฌ

AJAX, Fetch, Axios

HYEJU01 2024. 8. 24. 19:23
 

๋ชฉ์ฐจ

 

     

     

    1. AJAX (Asynchronous JavaScript and XML)

     

    2005๋…„ ํƒ„์ƒ

     

    ๊ธฐ์กด: ์›น ํŽ˜์ด์ง€์—์„œ ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜๋Š” ๋ฐฉ์‹ (๋น„ํšจ์œจ์ )

    ํ˜„์žฌ: ํŽ˜์ด์ง€ ์ผ๋ถ€๋งŒ ๋™์ ์œผ๋กœ ๊ฐฑ์‹  (๋น„๋™๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ)

    *๋น„๋™๊ธฐ: ์ž‘์—…์„ ์š”์ฒญํ•˜๊ณ  ๊ทธ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ผ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฐฉ์‹

     

    ๐Ÿ“Œ๋‹จ์ 

    • ๋ณต์žกํ•œ ์ฝ”๋“œ: AJAX๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๋‹ค๋ค„์•ผ ํ•ด์„œ ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๊ณ  ๋ณต์žก
    • ๋ธŒ๋ผ์šฐ์ € ๊ฐ„ ์ฐจ์ด: ์ดˆ๊ธฐ์—๋Š” ๋ธŒ๋ผ์šฐ์ € ๊ฐ„ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ
    • ์ง€์› ๋ถ€์กฑ: ์ผ๋ถ€ ๊ธฐ๋Šฅ์€ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œ๋Œ€๋กœ ์ง€์›๋˜์ง€ ์•Š์Œ

     

    2. Fetch API

    2015๋…„ W3C ์›น ํ‘œ์ค€ ์ฑ„ํƒ๋จ (2014๋…„ ์ฏค ๋“ฑ์žฅ)

     

    ๊ธฐ์กด: AJAX์˜ XMLHttpRequest ๊ฐ์ฒด ์‚ฌ์šฉ ๋ณต์žก, ์ง๊ด€์ ์ด์ง€ ์•Š์Œ

    ํ˜„์žฌ: ์ง๊ด€์ ์ด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด Promise ๊ธฐ๋ฐ˜ ์„ค๊ณ„

     

    = ๊ฐ€๋ฒผ์šด ๋А๋‚Œ์ด ๊ฐ•ํ•˜๊ณ  ์„ค์น˜ํ•  ํ•„์š” ์—†์–ด์„œ ํŽธํ•จ

     

    ๐Ÿ“Œ์žฅ์ 

    • Promise ๊ธฐ๋ฐ˜: ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์—์„œ then()๊ณผ catch()๋ฅผ ์ด์šฉํ•œ ์ฒด์ด๋‹ ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฌ์›€
    • ๊ธฐ๋ณธ ๋‚ด์žฅ API: Fetch๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‚ด์žฅ API๋ผ์„œ ์ถ”๊ฐ€์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Œ
    • ์‘๋‹ต ์ฒ˜๋ฆฌ: ์‘๋‹ต์„ ๋ฐ”๋กœ JSON์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์ง๊ด€์ ์ด๊ณ  ๊ฐ„๋‹จ

     

    ๐Ÿ“Œ๋‹จ์ 

    • ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ: ์ดˆ๊ธฐ์—๋Š” ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›๋˜์ง€ ์•Š์•„์„œ ํด๋ฆฌํ•„์ด ํ•„์š”, ํ˜„์žฌ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›ํ•˜์ง€๋งŒ, ์—ฌ์ „ํžˆ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๋ฌธ์ œ
    • ์—๋Ÿฌ ์ฒ˜๋ฆฌ: Fetch๋Š” HTTP ์˜ค๋ฅ˜ ์ƒํƒœ๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ 400 ์ด์ƒ์ผ ๊ฒฝ์šฐ ์ง์ ‘ throw๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•จ
    • ์ƒํƒœ ๊ด€๋ฆฌ ํ•„์š”: ์‘๋‹ต์ด ์„ฑ๊ณต์ ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ํ™•์ธํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์ฝ”๋“œ๊ฐ€ ์ข€ ๋” ๋ฒˆ๊ฑฐ๋กœ์›€

     

     

    3. Axios

    2014๋…„์— ๋งŒ๋“ค์–ด์ง

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋น„๋™๊ธฐ HTTP ์š”์ฒญ์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

    ํ˜„์žฌ: XMLHttpRequest์™€ Fetch์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉ, ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ , ์ง๊ด€์  ๋“ฑ๋“ฑ

     

    =  ๋ฌด๊ฑฐ์šด ๋А๋‚Œ์— ์„ค์น˜ํ•ด์•ผํ•˜์ง€๋งŒ ์—๋Ÿฌ์ฒ˜๋ฆฌ๋‚˜ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฉด์—์„œ ํŽธ๋ฆฌ

     

     

    ๐Ÿ“Œ์žฅ์ 

    • ์ž๋™ JSON ๋ณ€ํ™˜: ์„œ๋ฒ„ ์‘๋‹ต์„ ์ž๋™์œผ๋กœ JSON ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด์ค˜์„œ, ๋ณ„๋„์˜ ๋ณ€ํ™˜ ์ž‘์—…์ด ํ•„์š” ์—†์Œ
    • ์‘๋‹ต ์ธํ„ฐ์…‰ํ„ฐ: ์‘๋‹ต์„ ๋ฐ›๊ธฐ ์ „์— ํŠน์ • ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜, ์‘๋‹ต์„ ๋ฐ›์€ ํ›„์— ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Œ
    • ์š”์ฒญ ์ทจ์†Œ ๊ธฐ๋Šฅ: ์š”์ฒญ์„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ
    • ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ: Axios๋Š” ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €๋ถ€ํ„ฐ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๊นŒ์ง€ ํญ๋„“๊ฒŒ ํ˜ธํ™˜๋จ
    • ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ๋“ค: axios.all๋กœ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ , Promise ๊ธฐ๋ฐ˜์ด๋ผ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋„ ์‰ฌ์›€

     

    ๐Ÿ“Œ๋‹จ์ 

    • ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: Axios๋Š” ๊ธฐ๋ณธ ๋‚ด์žฅ API๊ฐ€ ์•„๋‹ˆ๋ผ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ถ”๊ฐ€์ ์ธ ์„ค์น˜์™€ ์„ค์ •์ด ํ•„์š”ํ•จ
    • ์ƒ๋Œ€์ ์œผ๋กœ ํฐ ์šฉ๋Ÿ‰: Axios๋Š” Fetch๋‚˜ XMLHttpRequest์— ๋น„ํ•ด ์กฐ๊ธˆ ๋” ํฐ ์šฉ๋Ÿ‰์„ ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ์Œ