학교 취업 동아리에서 훅, 로컬스토리지를 활용해서 날씨 API를 가져와 날씨를 알려주는 웹을 만드는 과제를 받았습니다.
이 과제를 수행하면서 Axios에 대해 공부하게 되었습니다.
React에서 API를 연동하는 방법 중 제일 많이 사용되는 방법이 바로 Axios라고 합니다.
그래서 오늘은 Axios를 한 번 파해쳐 보겠습니다!
Axios는 브라우저, Node.js를 위한 Promise API를 활용하는 HTTP 비동기 통신 라이브러리입니다.
내부적으로 브라우저에서는 XMLHttpRequest 객체를 사용하고, Node.js에서는 http 모듈을 활용하여 요청을 처리합니다.
특히 Axios는 Promise API 기반으로 동작하기 때문에 비동기 코드 작성이 깔끔하고, async/await 구문과 자연스럽게 어울립니다.
단순히 요청을 보내는 기능뿐만 아니라, 응답 데이터 변환, 요청 취소, 인터셉터, XSRF 보호 같은 다양한 편의 기능을 제공한다는 점에서 fetch보다 더 생산적입니다.
npm install axiosimport axios from 'axios';
axios.get('https://api.example.com/data')
.then(response => {
console.log(response.data); // 서버가 보내준 데이터
console.log(response.status); // HTTP 상태 코드
})
.catch(error => {
console.error(error); // 에러 처리
});
GET 방식에서는 axios.get으로 요청할 URL을 작성하고, .then()에서 성공 시 데이터를 처리하고, .catch()에서 에러를 처리합니다.
axios.post('https://api.example.com/data', {
name: 'jiyu',
age: 17
})
.then(response => {
console.log(response.data); // 서버 응답
})
.catch(error => {
console.error(error); // 에러 처리
});
POST 방식에서는 axios.post를 사용하고, URL과 함께 서버로 보낼 데이터를 작성합니다.
그리고 GET 방식과 마찬가지로 요청이 성공하면 .then()에서 응답 데이터를 처리하고,
요청이 실패하면 .catch()에서 에러를 처리합니다.
npm install axios와 같은 설치 과정이 필요하고, 코드 안에서도 axios from "axios"sk require("axios") 방식으로 불러와야 합니다.다음으로 Axios를 사용해서 제가 짠 코드를 통해 axios를 설명해 보겠습니다.
const fetchWeather = async (cityName) => {
if (!cityName) return;
try{
const res = await axios.get(
"https://api.openweathermap.org/data/2.5/weather",
{
params: {
q: cityName,
appid: API_KEY,
units: "metric",
lang: "kr",
},
}
);
if(res.status === 200){
if(weather){
setRecent([weather.name]);
localStorage.setItem("weather", JSON.stringify([weather.name]));
}
setWeather(res.data);
}
} catch(err) {
if(err.status && err.status === 404)
alert("지역을 찾을 수 없습니다.");
}
};
이 코드는 파일에 Axios가 있는 일부 코드만 가져온 것 입니다.
이 코드는 api key와 온도 단위 mertic(섭씨), api 응답 언어를 한국어로 설정하게 하는 파라미터를 전달하며 날씨 api를 불러오고 있습니다.
여기서 params란 기능은 Axios에서 URL 쿼리 파라미터를 쉽게 붙여주는 옵션입니다.
https://api.openweathermap.org/data/2.5/weatherq=Seoul&appid=API_KEY&units=metric&lang=kr
fetch로 사용하게 되면 URL에 직접 이어 붙여야 하는 번거로움이 있습니다.
즉, params는 Axios 전용 편의 기능입니다.
여기까지 Axios에 대해 알아보았습니다.
이 글을 읽고 보다 편리하게 Axios를 사용하였으면 좋겠습니다.
감사합니다!