개발/React
React에서 Axios 사용법
피터JK
2025. 1. 24. 10:37
728x90
React 애플리케이션에서 HTTP 요청을 보내기 위해 Axios를 사용하면 간단하고 강력한 기능을 활용할 수 있습니다.
이 글에서는 Axios의 설치부터 사용법, 추가 팁까지 상세히 정리하겠습니다.
1. Axios란?
Axios는 브라우저와 Node.js에서 사용할 수 있는 HTTP 클라이언트 라이브러리입니다. 주요 특징은 다음과 같습니다:
- Promise 기반으로 비동기 처리를 간단히 구현 가능
- JSON 데이터 자동 변환
- 요청 및 응답 인터셉터 제공
- 간단한 취소 요청 및 타임아웃 설정
- 브라우저 및 Node.js 환경 모두 지원
2. Axios 설치
Axios는 NPM이나 Yarn으로 설치할 수 있습니다.
# NPM
npm install axios
# Yarn
yarn add axios
3. 기본 사용법
3.1. GET 요청
GET 요청은 서버에서 데이터를 가져오는 데 사용됩니다.
import React, { useEffect, useState } from 'react';
import axios from 'axios';
function App() {
const [data, setData] = useState(null);
useEffect(() => {
axios.get('https://jsonplaceholder.typicode.com/posts')
.then(response => {
setData(response.data);
})
.catch(error => {
console.error('Error fetching data:', error);
});
}, []);
return (
<div>
<h1>Data</h1>
{data ? (
<ul>
{data.map(item => (
<li key={item.id}>{item.title}</li>
))}
</ul>
) : (
<p>Loading...</p>
)}
</div>
);
}
export default App;
3.2. POST 요청
POST 요청은 서버에 데이터를 전송할 때 사용됩니다.
function submitData() {
const payload = { title: 'New Post', body: 'This is a new post.', userId: 1 };
axios.post('https://jsonplaceholder.typicode.com/posts', payload)
.then(response => {
console.log('Data submitted:', response.data);
})
.catch(error => {
console.error('Error submitting data:', error);
});
}
4. Axios와 async/await
async/await 문법을 사용하면 Axios의 비동기 처리를 더욱 간단히 구현할 수 있습니다.
import React, { useEffect, useState } from 'react';
import axios from 'axios';
function App() {
const [data, setData] = useState(null);
useEffect(() => {
const fetchData = async () => {
try {
const response = await axios.get('https://jsonplaceholder.typicode.com/posts');
setData(response.data);
} catch (error) {
console.error('Error fetching data:', error);
}
};
fetchData();
}, []);
return (
<div>
<h1>Async/Await Example</h1>
{data ? (
<ul>
{data.map(item => (
<li key={item.id}>{item.title}</li>
))}
</ul>
) : (
<p>Loading...</p>
)}
</div>
);
}
export default App;
5. Axios 설정
Axios의 기본 설정을 통해 중복 코드를 줄이고 일관된 HTTP 요청을 관리할 수 있습니다.
5.1. Axios 인스턴스 생성
import axios from 'axios';
const apiClient = axios.create({
baseURL: 'https://jsonplaceholder.typicode.com',
timeout: 1000,
headers: { 'Authorization': 'Bearer YOUR_TOKEN_HERE' }
});
export default apiClient;
5.2. 인스턴스 사용
import React, { useEffect, useState } from 'react';
import apiClient from './apiClient';
function App() {
const [data, setData] = useState(null);
useEffect(() => {
apiClient.get('/posts')
.then(response => {
setData(response.data);
})
.catch(error => {
console.error('Error fetching data:', error);
});
}, []);
return (
<div>
<h1>Custom Axios Instance</h1>
{data ? (
<ul>
{data.map(item => (
<li key={item.id}>{item.title}</li>
))}
</ul>
) : (
<p>Loading...</p>
)}
</div>
);
}
export default App;
6. 추가 팁
6.1. 요청 및 응답 인터셉터
Axios 인터셉터를 사용하면 요청 및 응답을 가로채 필요한 작업을 추가로 수행할 수 있습니다.
// 요청 인터셉터
axios.interceptors.request.use(config => {
console.log('Request sent:', config);
return config;
}, error => {
return Promise.reject(error);
});
// 응답 인터셉터
axios.interceptors.response.use(response => {
console.log('Response received:', response);
return response;
}, error => {
return Promise.reject(error);
});
6.2. 요청 취소
Axios의 취소 토큰을 사용하여 요청을 취소할 수 있습니다.
import axios from 'axios';
const source = axios.CancelToken.source();
axios.get('https://jsonplaceholder.typicode.com/posts', {
cancelToken: source.token
}).then(response => {
console.log('Response:', response);
}).catch(thrown => {
if (axios.isCancel(thrown)) {
console.log('Request canceled:', thrown.message);
} else {
console.error('Error:', thrown);
}
});
// 요청 취소
source.cancel('Operation canceled by the user.');
7. 결론
React에서 Axios는 간단하면서도 강력한 HTTP 클라이언트로, 다양한 요청을 쉽게 처리할 수 있습니다. 기본 사용법부터 고급 설정까지 잘 이해하고 활용하면 더 효율적인 네트워크 처리를 구현할 수 있습니다. 블로그를 통해 Axios를 익히고 프로젝트에 적용해 보세요!
728x90