[JavaScript] AJAX, fetch API

fejiguยท2022๋…„ 7์›” 28์ผ
1

Javascript

๋ชฉ๋ก ๋ณด๊ธฐ
16/21


๐Ÿ”Ž ๋น„๋™๊ธฐ, ์ฝœ๋ฐฑ ํ•จ์ˆ˜, Promise, async/await, Node.js์— ์ด์–ด์„œ fetch API์— ๋Œ€ํ•ด ํ•™์Šตํ•˜์˜€๋‹ค.

์•„์ง fetch API๊ฐ€ ๋ฌด์—‡์ธ์ง€, fetch๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถˆ๋Ÿฌ์˜ค๋Š”์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์•„ ํ•œ๋ฒˆ ์ •๋ฆฌํ•˜๋ฉฐ ๋ณต์Šตํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.



โœ”๏ธ ๋„คํŠธ์›Œํฌ ์š”์ฒญ

์ด์ œ๊นŒ์ง€ ํ•™์Šตํ•œ ๋น„๋™๊ธฐ ์š”์ฒญ์˜ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์‚ฌ๋ก€๋Š” ๋„คํŠธ์›Œํฌ ์š”์ฒญ์ด๋‹ค. ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง€๋Š” ์š”์ฒญ์€ ํ˜•ํƒœ๊ฐ€ ๋‹ค์–‘ํ•œ๋ฐ ๊ฐ€์žฅ ํ”ํ•œ ํ˜•ํƒœ๊ฐ€ URL๋กœ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

์ด ๋•Œ, URL๋กœ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅ์ผ€ ํ•ด์ฃผ๋Š” API๊ฐ€ ๋ฐ”๋กœ fetch API์ž…๋‹ˆ๋‹ค.




โœ”๏ธ ์ด๊ฒƒ์ด ๋ฐ”๋กœ AJAX

์ด๋ ‡๊ฒŒ ์„œ๋ฒ„์™€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ˆ ์„ AJAX๋ผ๊ณ  ํ•œ๋‹ค.

๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ณด์ž๋ฉด, AJAX๋Š” ์ƒˆ๋กœ ๊ณ ์นจ ์—†์ด ์„œ๋ฒ„์—๊ฒŒ GET ์š”์ฒญ์„ ํ•˜๋Š” javascript ์ฝ”๋“œ์ธ ๊ฒƒ์ด๋‹ค.
(์ด๊ฑด ์–ด๋Š์ •๋„ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„, ์ด์— ๋Œ€ํ•œ ์ •๋ฆฌ๋„ ์ด์ „์— ํ–ˆ์—ˆ๋‹ค.[server์— ๋Œ€ํ•œ ์ดํ•ด])




โœ”๏ธ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ฐฉ๋ฒ•

1. ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ URL
2. ํ•ด๋‹น URL๋กœ GET ์š”์ฒญ

<script> 
  fetch('https://github.com/codestates-seb/fe-sprint-async-and-promise-reference')
	.then((response) => {
    // ์—๋Ÿฌ๋ฅผ ์™„์ „ ์žก์•„์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด
    if (!response.ok) {
      throw new Error('400 ํ˜น์€ 500 ์—๋Ÿฌ ์ƒ๊น€')
    }
  	return reponse.json()
})
	.then((๊ฒฐ๊ณผ) => {
  	console.log(๊ฒฐ๊ณผ)
 	// ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด
	.catch(() => {
      console.log('์—๋Ÿฌ ์ƒ๊น€')
    })
})
</script>
<script>
  asyn function ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜(){
	let response = await fetch('https://github.com/codestates-seb/fe-sprint-async-and-promise-reference')
if (!response.ok) {
      throw new Error('400 ํ˜น์€ 500 ์—๋Ÿฌ ์ƒ๊น€')
    }
let result = await response.json();
  console.log(result)
}
๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜().catch(() => {
      console.log('์—๋Ÿฌ ์ƒ๊น€')
    });
</script>
profile
console.log(frontendjigu( โ˜•๏ธ, ๐Ÿ“ฑ); // true

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