2025. 8. 11. 17:17ใReact
Fetch๋?
Fetch API๋ ๋คํธ์ํฌ ์์ฒญ์ ์ํด fetch()๋ผ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ ๋ธ๋ผ์ฐ์ ๋ด์ฅ ์ธํฐํ์ด์ค์ ๋๋ค.
- ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ๋ด์ฅ๋์ด ์์ด ๋ณ๋์ ์ค์น๊ฐ ํ์ ์์ต๋๋ค.
- ๋น๋๊ธฐ ์์ ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก Promise๊ธฐ๋ฐ๋ก ์์ฒญ ๋ฐ ์๋ต์ ์ฒ๋ฆฌํฉ๋๋ค.
- HTTP์ 404 or 500 ์๋ฌ๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ต ๊ฐ์ฒด์ ok์์ฑ์ ํ์ธํ ํ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํฉ๋๋ค. (. catch ์ฌ์ฉ)
- ์๋ต ๋ณธ๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํธ๋ฆผ ํํ๋ก ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ๋ฐ์ดํฐ ์ง๋ ฌํ๋ฅผ ํด์ผ ํฉ๋๋ค.
๐ก Promise
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฒด์ ๋๋ค.
[๋คํธ์ํฌ ์์ฒญ]
- ์ฑ๊ณต ์ resolve promise ์๋ต
- ์คํจ ์ reject promise ์๋ต
โ ๏ธ HTTP ์ํ ์ฝ๋๊ฐ 404 or 500
HTTP ์ํ ์ฝ๋๊ฐ 404๋ 500์ด์ด๋ ๋คํธ์ํฌ ์์ฒญ ์์ฒด๋ ์ฑ๊ณตํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๊ธฐ ๋๋ฌธ์ ์๋ต ๊ฐ์ฒด์ ok ์์ฑ์ ํ์ธํ์ฌ ์ง์ ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ ์ง๋ ฌํ ํ๊ธฐ
๋ฐ์ดํฐ ์ง๋ ฌํ ์
์ง๋ ฌํ ์ ์๋ fetch()๊ฐ ๋ฐํํ ์๋ต ๊ฐ์ฒด ์ ์ฒด๊ฐ ์ถ๋ ฅ๋์ด, ํค๋, ์ํ ์ฝ๋ ๋ฑ ๋ฉํ ์ ๋ณด๋ง ๋ณผ ์ ์๊ณ ์ค์ ๋ฐ์ดํฐ๋ ๋ณด์ด์ง ์์ต๋๋ค.
fetch(url, {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${token}`
}
})
.then(res => console.log(res));
์๋ต ๊ฐ

๋ฐ์ดํฐ ์ง๋ ฌํ ํ
res.json() ๊ฐ์ ๋ฉ์๋๋ก ์ง๋ ฌํ(ํ์ฑ) ํด์ผ ์ค์ JSON ๋ฐ์ดํฐ๊ฐ Promise๋ก ๋ฐํ๋์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
fetch(url, {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${token}`
}
})
.then((res) => res.json()) //json ์ง๋ ฌํ
.then((data) => {
console.log(data); //์ค์ ๋ฐ์ดํฐ ์ถ๋ ฅ
});
์๋ต ๊ฐ

Axios๋?
Pormise ๊ธฐ๋ฐ HTTP ํด๋ผ์ด์ธํธ๋ก ์์ฒญ ๋ฐ ์๋ต์ ์ฒ๋ฆฌํ๋๋ฐ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- ๋ธ๋ผ์ฐ์ ์ Node.js ํ๊ฒฝ์์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ณ๋์ ์ค์น๊ฐ ํ์ํฉ๋๋ค.
- Fetch์ ๋์ผํ๊ฒ Promise ๊ธฐ๋ฐ์ผ๋ก ์์ฒญ ๋ฐ ์๋ต์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์์ฒญ์ด๋ ์๋ต์ ๊ฐ๋ก์ฑ์ ์ค๊ฐ์ ๋ก์ง์ ์ถ๊ฐํ๊ฑฐ๋ ํค๋๋ฅผ ์์ ํ๋ ์์ ์ ํ ์ ์์ต๋๋ค.
- ์๋์ผ๋ก JSON ํ์ฑ์ ์ํํ๋ฉฐ HTTP ์๋ฌ ์ํ๋ ์๋์ผ๋ก ์ฒ๋ฆฌํด ์ค๋๋ค.
- ์์ฒญ ์ทจ์, ์์ฒญ ํ์์์ ์ค์ ์ ์ง์ํฉ๋๋ค. (์์ฒญ ์ทจ์๋ฅผ ํตํด ๋ถํ์ํ ์์ฒญ์ ๋ฐฉ์งํฉ๋๋ค.)
๐ก Axios ์ค์น
์ค์น ๋ช ๋ น์ด
npm install axios
ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
import axios from "axios";
Fetch์ Axios ๋น๊ต
| ๊ตฌ๋ถ | Fetch | Axios |
| ์ค์น ์ฌ๋ถ | ์ธํฐํ์ด์ค (์ค์น ํ์ โ) | ๋ผ์ด๋ธ๋ฌ๋ฆฌ (์ค์น ํ์ โญ) |
| ์๋ฌ ๋ฐ ๋ฐ์ดํฐ ์ง๋ ฌํ ์ฒ๋ฆฌ | ์๋์ผ๋ก ์์ฑ | ์๋์ผ๋ก ์ฒ๋ฆฌ |
| ์ง์ ํ๊ฒฝ | ์ต์ ๋ธ๋ผ์ฐ์ ์์ ๋์ | ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ |
| ํน์ง ๋ฐ ๊ธฐ๋ฅ | ๊ฐ๋ณ์ง๋ง, ๊ณ ๊ธ ๊ธฐ๋ฅ โ | ์ธํฐ์ ํฐ, ์์ฒญ ์ทจ์ ๋ฑ ๊ธฐ๋ฅ ํฌํจ |
๋ฐฑ์๋ API ํธ์ถํ๊ธฐ
์๋ ํฌ์คํ ์์๋ Axios๋ฅผ ์ ํํ ์ด์ ์ GET ์์ฒญ์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ์ต๋๋ค.
(POST, DELETE ๋ฑ์ ์์ฒญ์ ์ถํ ๊ตฌํ ํ ์ถ๊ฐํ ์์ ์ ๋๋ค.)
[๋ฆฌ์กํธ] ๋ฐฑ์๋ API ํธ์ถ (featGet ์์ฒญ ๋ณด๋ด๊ธฐ. Axios ์ ํ ์ด์ , )
ํ๋ก ํธ์๋์ ๋ฐฑ์๋๋ฅผ ๋ชจ๋ ๊ตฌํํ๋ ํ์คํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ธฐ์ด ํ์ต์ ํ๊ณ ์์ต๋๋ค.์ด์ ๊น์ง๋ UI ๊ตฌํ์๋ง ์ง์คํ๊ณ ์ด์ ๋ฐฑ์๋์์ ์ฐ๋ ์์ ์ ์์ํ๋ ค๊ณ ํฉ๋๋ค. HTTP ์์ฒญ ์ฒ
clvl1022.tistory.com
๐ ์ฐธ๊ณ ์๋ฃ
[JavaScript] Fetch์ Axios์ ์ฐจ์ด์ ๋น๊ต
ํฌ๊ณ ์์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค ๋ณด๋ฉด, ์ฐ๋ฆฌ๋ ๋ฐฑ์๋ ๋๋ ์๋ํํฐ API์ ๋คํธ์ํฌ ์์ฒญ(HTTP Requests)์ด ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ Fetch ํน์ Axios์ ๊ฐ์ HTTP ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
despiteallthat.tistory.com
Axios in React: A Guide for Beginners - GeeksforGeeks
Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.
www.geeksforgeeks.org
[React] React ์์ Axios ์ฌ์ฉํ๊ธฐ
[React] React ์์ Axios ์ฌ์ฉํ๊ธฐ Axios ๋? Axios๋ Promise ๊ธฐ๋ฐ์ HTTP ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๋ธ๋ผ์ฐ์ ๋ฐ Node.js ํ๊ฒฝ์์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค. ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์๋ XMLHttpRequests ๋ฅผ ์์ฑํ๊ณ , node.js
ramincoding.tistory.com