Axios를 간단히 소개하자면 fetch() 함수처럼 request를 보내고 response를 받을 수 있는 라이브러리입니다. fetch() 함수랑 사용법은 비슷하지만 조금 더 편리하게 쓸 수 있는 라이브러리라고 생각하시면 됩니다.
Axios를 설치하고 사용하는 방법에 대해 간략하게 정리한 글입니다.
설치
npm install axios
fetch vs axios
fetch 가 기존에 있지만 왜 axios 를 사용하는 것일까요??
그 이유는 axios 가 더 직관적이고 생략할 수 있는 부분이 있으며 간단하게 사용할 수 있기 때문입니다.
fetch
async function getProducts() {
const res = await fetch('https://www.naver.com/hello');
const products = await res.json();
return products;
}
async function createSizeReview(body) {
const res = await fetch(
'https://www.naver.com/hello',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
}
);
const newSizeReview = await res.json();
return newSizeReview;
}
axios
async function getProducts() {
const res = await axios.get('https://www.naver.com/hello');
const products = res.data;
return products;
}
async function createSizeReview(body) {
const res = await axios.post(
'https://www.naver.com/hello',
body
);
const newSizeReview = res.data;
return newSizeReview;
}
이렇게 코드를 비교해 보면 누가봐도 axios 가 더 직관적이고 사용하기 쉽고 불필요한 코드를 추가 할 필요가
없다는 것을 느낄 수 있습니다. 저도 사용하고 있지만 매우 편리하다고 생각합니다.
params
Fetch에서는 쿼리 문자열을 직접 만들어서 넣어야 하는데요. Axios에서는 params라는 속성의 객체로 전달하면 됩니다.
async function getProducts({ offset = 0, limit = 10 }) {
const res = await axios.get('https://www.naver.com/hello', {
params: { offset, limit },
});
const products = res.data;
return products;
}
// https://learn.codeit.kr/api/codeitmall/products/?offset=0&limit=10
instance
리퀘스트를 보낼 때 공통으로 사용하는 주소나 헤더가 있기 마련입니다.
이럴 때는 인스턴스를 만들면 반복되는 코드를 줄일 수 있습니다.
예를 들어서 아래 예시는 axios.js 파일에 axios.create() 함수를 사용해서 Axios 인스턴스를 만든 예시입니다.
baseURL을 지정해서 반복되는 코드를 줄였습니다.
// src/instance.jsx
import axios from 'axios';
const instance = axios.create({
baseURL: 'https://www.naver.com/hello'
});
export default instance;
import instance from '../src/instance.tsx';
// ...
async function getProducts() {
const res = await instance.get('/products');
const products = res.data;
return products;
}
async function createSizeReview(body) {
const res = await instance.post('/size-reviews', body);
const newSizeReview = res.data;
return newSizeReview;
};
'React' 카테고리의 다른 글
React-Debounce (2) | 2024.08.08 |
---|---|
React 에서 files 다루기 (0) | 2024.07.29 |
React Redux (0) | 2024.07.10 |
useCallback (0) | 2024.05.03 |
useMemo (0) | 2024.05.03 |