axios vs fetch
"fetch ์ axios๋ ๋ชจ๋ HTTP ์์ฒญ์ ๋ณด๋ด๋ ๋ฐ ์ฌ์ฉ๋๋ ๋๊ตฌ์ด๋ค."
fetch
ES6 ๋ถํฐ ๋ค์ด์จ JavaScript ๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
Promise ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก๊ธฐ ๋๋ฌธ์ axios์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ๊ฐ ์ฝ๊ณ , ๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆด๋ผ๋ ์ฅ์ ์ผ๋ก
์๋นํ ํธ๋ฆฌํ๋ค.
fetch("https://localhost:8080/user/post", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
id: "jiho",
description: "hello jiho",
}),
}).then((response) => console.log(response));
fetch์ ์ฅ์
1. ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฏ๋ก ๋ณ๋๋ก importํ ํ์๊ฐ ์๋ค.
2. Promise ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ๊ฐ ํธ๋ฆฌํ๋ค.
3. ๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ์ ๋ฐ์ดํธ์ ๋ฐ๋ฅธ ์๋ฌ ๋ฐฉ์ง๊ฐ ๊ฐ๋ฅํ๋ค.
fetch์ ๋จ์
1. ์ง์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์กด์ฌํ๋ค.
2. ๋คํธ์ํฌ ์๋ฌ ๋ฐ์ ์ response timeout์ด ์์ด ๊ธฐ๋ค๋ ค์ผ ํ๋ค. -> ๊ทธ๋ ๋ค๊ณ ๋จ์ ์ด๋ผ๊ณ ํ๊ธฐ์๋
AbortController ์ธํฐํ์ด์ค๋ฅผ ํตํด์ ์ ์ด๊ฐ ๊ฐ๋ฅํ๋ค. -> ๊ท์ฐฎ์์ง๊ฒ์ ๋ง๋ค. ใ ใ
const url = "https://jsonplaceholder.typicode.com/todos";
const controller = new AbortController();
const signal = controller.signal;
setTimeout(() => controller.abort(), 4000);
fetch(url, {
signal: signal,
})
.then((response) => response.json())
.then(console.log)
.catch((err) => {
console.error(err.message);
});
3. JSON์ผ๋ก ๋ณํํด์ฃผ๋ ๊ณผ์ ์ด ํ์ํ๋ค.
4. ์๋์ ์ผ๋ก axios์ ๋นํด ๊ธฐ๋ฅ์ด ๋ถ์กฑํ๋ค.
axios
axios๋ Node.js์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํ Promise API๋ฅผ ํ์ฉํ๋ HTTP ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
๋น๋๊ธฐ๋ก HTTP ํต์ ์ ํ ์ ์์ผ๋ฉฐ, return์ Promise ๊ฐ์ฒด๋ก ํด์ฃผ๊ธฐ ๋๋ฌธ์ response ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ฝ๋ค.
axios({
method: 'post',
url: 'https://localhost:8080/user',
data: {
userName: 'jiho',
userId: 'jiho112'
}
}).then((response) => console.log(response));
axios์ ์ฅ์
1. response timout (fetch์๋ AbortController) ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ด ์์ด ์๋ฒ ๋ฏธ์๋ต์ ์ค์ ์ด ๊ฐ๋จํ๋ค.
2. Promise ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ ํธ๋ฆฌํ๋ค.
3. ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ต์ ํ๋ก ๋ธ๋ผ์ฐ์ ํธํ์ฑ(๊ตฌํ ๋ธ๋ผ์ฐ์ ์ง์)์ด ๋ฐ์ด๋๋ค.
axios ๋จ์
1. ์ฌ์ฉ์ ์ํ ๋ชจ๋ ์ค์น๊ฐ ํ์ํ๋ค.
npm์ ์ฌ์ฉํ์ฌ ์ค์น
npm install axios
yarn์ ์ฌ์ฉํ์ฌ ์ค์น
yarn add axios
์ดํ, ํ๋ก์ ํธ์์ import ์์ฑ
import axios from "axios";
์ฑ๋ฅ
์์์ ํ์ธํ ์ ์๋ฏ์ด native fetch๊ฐ axios ๋ณด๋ค ์ด์ง ๋น ๋ฅด๋ค. ๋ ํด๋ผ์ด์ธํธ ๋ชจ๋ ๋น๋๊ธฐ ์ด๊ธฐ ๋๋ฌธ์ ํฌ๊ฒ ์ค์ํ์ง ์๋ค.
ํ์ง๋ง ๋ถ๋ฌ์ค๋ ๋ฐ์ดํฐ๊ฐ ๋ฌด๊ฒ๋ค๋ฉด ๋น๋๊ธฐ๋ผ๊ณ ํด๋ ์๋ ์ฐจ์ด๊ฐ ์์ ์๊ฐ ์๋ค๋ ์ ์ ๊ณ ๋ คํด์ผ ํ๋ค.
๊ฒฐ๋ก
๊ฒฐ๊ตญ, ์ด๋ค ํ๋ก์ ํธ๋ฅผ ํ๋๋ ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ์์ ์ฑํฅ ๋ฑ์ ์ข ํฉ์ ์ผ๋ก ๊ณ ๋ คํ์ฌ ๋ ๊ฐ์ง ์ค ์ ํํด์ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ฐธ๊ณ :