์๋ฒ์ get,post ์์ฒญํ ๋ ์๋ก๊ณ ์นจ ์์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ๋์์ฃผ๋ ๊ฐ๋จํ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ
ajax ์ฌ์ฉํ๋ฉด ์๋ก๊ณ ์นจ ์์ด๋ ์ผํ๋ฌผ ์ํ์ ๋ ๊ฐ์ ธ์ฌ ์ ์๊ณ , ์๋ก๊ณ ์นจ ์์ด๋ ๋๊ธ์ ์๋ฒ๋ก ์ ์กํ ์ ์๊ฒ ๋๋ค.
๊ทธ๋ฐ๋ฐ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋๋ ์ฐ๋ฆฌ๊ฐ ์ ๋ฐ ๋ฐ์ดํฐ ์ฃผ์ธ์์ค์ค ๋ผ๊ณ ๋ผ์ด๋ค๊ณ ์ฃผ์ง ์๊ณ , ๊ท๊ฒฉ์ ๋ง์ถฐ ์์ฒญ์ ํด์ผ ํ๋ค. ์ ๊ทธ๋ฌ๋ฉด ์์ค๋ค.
๊ทธ๋ผ ์ด์ ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ ์์ฒญํ๋ ๋ฒ์ ๋ํด ์์๋ณด๋๋ก ํ์.
๋ค์ 3๊ฐ ์ค ํ1
๋ฐ๋๋ผ ๊ณผ์ ๋ ์ฌ์ฉํ๋ fetch()๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ ํจ์์ฌ์ ์ฝ๋ ์งค๋ ์ผ์ผ์ด json() ์ฒ๋ฆฌ๋ฅผ ๋ค ํด์ค์ผ ํ๋ค.(์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ๋ฌธ์๋ง ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค. array, object ๋ค ๋ถ๊ฐ๋ฅ...)
์ด๋ ๊ฒ response.json()์ ํธ์ถํ๋ฉด JSON ๋ฐ์ดํฐ๋ฅผ javascript ๊ฐ์ฒด๋ก ๋ณํํ๋ค.
fetch('https://๋ฐ์ดํฐ๋ฐ์์ค๋url')
.then(res => res.json())
.then(function(data){
console.log(data)
})
.catch(function(error){
console.log('์คํจ')
})
JSON.parse()
์๋ ์๋ต(response) ๋ฐ๋
๋ง์ ๋ฃ์ด์ผํ๋ค. ๋ฐ๋์ ํค๋๊ฐ ๋ค์ด๊ฐ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค์ง ๋ชปํ๋ค.
res.json()
์๋ ์๋ต(response) ํค๋๊ฐ ๋ค์ด๊ฐ๋ ๋ฐ๋๋ง ์ฝ์ด์ ๋ถ๋ฌ์จ๋ค.
๋ ๊ณ์ vite ๋ก ๋ฆฌ์กํธ ํ๋ก์ ํธ ์ค์ด๋
1. yarn add axios
๋ก ์ค์นํ๋ค.
2. import axios from 'axios'
๋ผ๊ณ ์๋จ์์ importํ๊ธฐ
3. axios.get(URL).then(()=>{})
4. ์คํจํ ๊ฒฝ์ฐ ๋๋นํด .catch()
๋ ํจ๊ป ์์ฑํด์ฃผ์
axios๋ promise๊ธฐ๋ฐ์ ajax ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์ด ๊ธฐํ์ promise๋ ๋ค์ ํ๋ฒ ์ ๋ฆฌํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ ๋ณต์ต์๊ฐ~!
๋ง๋๋ ๋ฐฉ๋ฒ
let ํ๋ก๋ฏธ์ค = new Promise();
ํ๋ก๋ฏธ์ค.then(function(){
}).catch(function(){
})
then
:ํ๋ก๋ฏธ์ค ์์ ์ฝ๋ ์คํ์ด ์ฑ๊ณต์ผ ๋ then()ํจ์ ๋ด์ ์ฝ๋ ์คํ
catch
: ํ๋ก๋ฏธ์ค ์์ ์ฝ๋ ์คํ์ด ์คํจํ ๋ catch() ํจ์ ๋ด์ ์ฝ๋ ์คํ
์ผ๋จ ๋ณด๊ธฐ ํธํ๋ค. then ํจ์๋ฅผ ๋ถ์ฌ์ ์์ฐจ์ ์คํ๋๋ฏ๋ก!
์คํจ์ ํน์ ์ฝ๋ ์คํํด์ฃผ์ธ์(catch) ๋ผ๊ณ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ!
Promise๋ ์ฝ๊ฒ ๋งํ๋ฉด ์ฑ๊ณตํ๋ฉด then()์์ ์ฝ๋ ์คํ, ์คํจํ๋ฉด catch()์์ ์ฝ๋ ์คํํด์ฃผ์ธ์~
๋ผ๊ณ ๋งํ๋ ์ฑ๊ณต&์คํจ ํ์ ๊ธฐ๊ณ
์ธ๋ฐ, Promise์์๋ ์๋ฌด๊ฑฐ๋ ๋ค ์ง์ด๋ฃ์ ์ ์๋ค. ์๋ฅผ ๋ค์ด, 1+1 ์ฐ์ฐ ๋๋๋ฉด ์ฑ๊ณตํ์ ๋ด๋ ค์ฃผ์ธ์! ajax ์์ฒญ์ผ๋ก ์๋ฒ์์ ๋ฐ์ดํฐ ์ ๊ฐ์ ธ์ค๋ฉด ์ฑ๊ณต, ์๋ฌ๋๋ฉด ์คํจํ์ ๋ด๋ ค์ฃผ์ธ์!
new Promise() ์์ ์ฝ๋ฐฑํจ์
๋ฅผ ํ๋ ์ถ๊ฐํด์ฃผ๋ฉด ๊ทธ ์์์ ์ฑ๊ณต/์คํจ ํ์
๋ด๋ฆด ์ ์๋ค.
let ํ๋ก๋ฏธ์ค = new Promise(function(์ฑ๊ณต,์คํจ){
let ์ด๋ค์ฐ์ฐ=1+1;
์ฑ๊ณต(์ด๋ค์ฐ์ฐ)});
ํ๋ก๋ฏธ์ค.then(function(a){
console.log(`์ ๊ฒฐ๊ณผ๋ ${a}์
๋๋ค!์ฑ๊ณตํ์ด์!`)
}).catch(function(){
console.log('์ค์ฐ..์คํจ์
๋๋ค..')
})
์ฐธ๊ณ ๋ก, ์ฐ์ฐ๊ฒฐ๊ณผ ๊ฐ์๊ฑธ then์์์ ํ์ฉํ๊ณ ์ถ์ผ๋ฉด ์ฑ๊ณต()์์ ๋ฃ์ด์ฃผ๊ณ , ๋์ค์ ํ๋ผ๋ฏธํฐ ํํ๋ก ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
promise๋ฅผ ๋ฆฌํดํ๊ณ , ๋ ๊ฐ์ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค. ํ๋๋ Promise๋ฅผ ์ดํํ์๋, ํ๋๋ ๊ฑฐ๋ถ๋์ ๋
p.then(function(value){
//์ดํ
}, function(reson){
//๊ฑฐ๋ถ
});
const ํจ์=new Promise(function(res,rej){
์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค์ผ})
ํจ์.then().catch(function(err){
console.log(err)
});
// rej()์ ๊ฒฐ๊ณผ ๊ฐ Error๋ฅผ err์ ๋ฐ์
์ฐ์์ ์ธ ์ฝ๋ ์ค์์ ๊ฐ์ฒด์ method๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถํ๋ ๊ฒ์ ์๋ฏธํ๋ค. method๊ฐ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ฉด ๊ทธ ๋ฐํ๊ฐ(๊ฐ์ฒด)์ด ๋ ๋ค๋ฅธ method๋ฅผ ํธ์ถํ ์ ์๋ค.
์ค๋ ์๋กญ๊ฒ ์๊ฒ ๋ ๊ฒ
์ค๋ ๊ถ๊ธํ๊ฑฐ๋ ๋ ์๊ณ ์ถ์ ๊ฒ
๊ทธ๋๊น .then()์ ๋ ๊ฐ์ ์ฝ๋ฐฑํจ์๋ฅผ ๋ฐ์ ์ ์์ง๋ง, ๋ณดํต ์ฑ๊ณตํ์ ๊ฒฝ์ฐ๋ง ์ ๊ณ , ๋๋จธ์ง๋ .catch()๋ก ๋ฐ๋๋ค๋๊ฑด๊ฐ?
์ค๋์ ์ผ๊ธฐ
ํ ์ผ์ด ์์ฃผ ๋ง๊ตฐ. ๋ณด๋์ฐฌ ํ๋ฃจ์๋ค.