반응형
리액트 앱은 보통 서버와 REST API로 통신하며 데이터를 주고받습니다.
이번 시간에는 axios 라이브러리를 활용하여 서버에서 데이터를 불러오고, 상태에 반영하는 실전 API 연동 방법을 배웁니다.
1. Axios란?
- fetch보다 간단하고 직관적인 HTTP 요청 라이브러리
- JSON 자동 처리, 요청/응답 인터셉터, 에러 처리 등에 강함
2. 설치하기
npm install axios
3. 예제: 영화 API 호출 앱
우리는 무료 샘플 API인 OMDb API를 활용해
영화 검색 기능을 만들어 볼게요.
👉 OMDb API 키: https://www.omdbapi.com/?apikey=7035c60c&s=검색어
4. 코드 작성
📄 App.js
import { useState, useEffect } from "react";
import axios from "axios";
function App() {
const [query, setQuery] = useState("Avengers");
const [movies, setMovies] = useState([]);
const [loading, setLoading] = useState(false);
const fetchMovies = async () => {
setLoading(true);
try {
const res = await axios.get(
`https://www.omdbapi.com/?apikey=7035c60c&s=${query}`
);
setMovies(res.data.Search || []);
} catch (err) {
alert("영화 데이터를 불러오는데 실패했습니다.");
}
setLoading(false);
};
useEffect(() => {
fetchMovies();
}, []);
return (
🎬 영화 검색
setQuery(e.target.value)} /> {loading ? (로딩 중...
) : (- {movies.map((movie) => (
- {movie.Title} ({movie.Year}) ))}
);
}
export default App;
5. 기능 설명
항목 설명
axios.get() | API 요청 (GET 방식) |
async/await | 비동기 처리 |
useState | 검색어, 영화목록, 로딩 상태 관리 |
useEffect | 첫 로딩 시 자동 검색 |
6. 로딩 처리와 에러 처리
- loading 상태로 로딩 중 UI 표시
- try/catch로 API 실패 시 사용자에게 알림 제공
이런 기본적인 에러/로딩 UX는 실무에서도 매우 중요합니다!
반응형
'📁 [4] 개발자 정보 & 코드 노트 > REACT' 카테고리의 다른 글
📘 리액트 강의 12편 - 성능 최적화 전략 (React.memo, useMemo, useCallback) (0) | 2025.04.12 |
---|---|
📘 리액트 강의 10편 - Redux Toolkit으로 전역 상태 관리하기 (0) | 2025.04.12 |
📘 리액트 강의 9편 - React Router로 페이지 전환 구현하기 (0) | 2025.04.12 |
📘 리액트 강의 8편 - Context API로 전역 상태 공유하기 (0) | 2025.04.12 |
📘 리액트 강의 7편 - 커스텀 훅과 성능 최적화 (useMemo, useCallback) (0) | 2025.04.12 |