무엇을 선택할까?
결론적으로 말하자면 개발 환경에 따라 다르겠지만 React 프로젝트를 진행할경우 Axios 를 선호하는 경향이 있다고 한다.
Axios는 크로스 브라우징에 신경을 많이 쓴 모듈이고 기능또한 우수하기 때문. 어떻게보면 fetch의 상위 호환
- Axios 장단점
- 장점
- response timeout 처리 방법이 있다 (fetch 에는 x)
- promise 기반이라 다루기 쉽다
- 크로스 브라우징에 신경을 많이 써서 브라우저 호환성 뛰어남
- 단점
- 모듈 설치를 해줘야한다.
- 장점
- Fetch 장단점
- 장점
- 내장 라이브러리여서 별도의 import 및 설치 x
- promise 기반
- 프레임워크가 불안정할때 사용하기 좋다 (내장 라이브러리이니까)
- 단점
- internet Exporloer의 경우에 fetch를 지원하지 않는 버전도 존재
- 기능이 부족함
- Fetch에 대한 자세한건 이곳 클릭
- 장점
Axios 문법
axios(url, {
// 설정 옵션
});
axios.get(url, {
// 설정 옵션
});
axios(url);
//HTTP 메서드 없이 요청할 경우 기본 GET 요청
axios({
method:"post",
url: '/user/1234',
data:{
firstName: 'young',
lastName: 'Kim',
}
});
axios(url, {
method: "get", // 다른 옵션도 가능합니다 (post, put, delete, etc.)
headers: {},
data: {},
});
- Axios를 사용해서 데이터를 긁어오면 기본적으로 JSON타입으로 사용 가능함 (Fetch와의 차이점)
- 응답 데이터는 언제나 응답 객체의 data 프로퍼티에서 사용 가능
const url = "https://jsonplaceholder.typicode.com/todos";
axios.get(url).then((response) => console.log(response.data));
에러 처리
기본적으로 promise를 반환하기 때문에 reject 된다면 .catch()를 사용하여 에러 처리 가능
const url = "https://jsonplaceholder.typicode.com/todos";
axios
.get(url)
.then((response) => console.log(response.data))
.catch((err) => {
console.log(err.message);
});
// POST
axios.post('/api/todos', { title: 'ajax 공부' }).then((res) => {
console.log(res);
});
// PATCH
axios.patch('/api/todos/3', { title: 'axios 공부' }).then((res) => {
console.log(res);
});
// DELETE /api/todos/1 (Delete)
// DELETE
axios.delete('/api/todos/3').then((res) => {
console.log(res);
});
// GET
axios.get('/api/todos').then((res) => {
console.log(res.data);
});
or;
const result = await axios.get('/api/todos');
console.log(result.data);
//axios 요청 메소드의 두 번째 인자로 config 객체를 넘길 수 있습니다
// config 객체
axios
.get('/api/todos', {
params: {
// query string
title: 'NEXT JS',
},
headers: {
// 요청 헤더
'X-Api-Key': 'my-api-key',
},
timeout: 3000, // 1초 이내에 응답이 오지 않으면 에러로 간주
})
.then((res) => {
console.log(res);
});
'FrontEnd > JavaScript' 카테고리의 다른 글
[자바스크립트] 이터러블 개념과 FE에서의 사용처 (0) | 2023.06.24 |
---|---|
[자바스크립트] map 메서드와 Map 객체의 차이 (0) | 2023.06.24 |
[JavaScript] this에 대해 (feat. bind) (0) | 2022.12.11 |
JSON Fetch 사용하기 (0) | 2022.12.04 |
JSON 이란? (0) | 2022.12.04 |