Fetch
- Promise 기반 비동기 통신 라이브러리
- 별도 설치 필요하지 않다.
- 단점
- 미지원 브라우저 존재
- 개발자에게 불친절한 response (jon으로 변환 과정 필요)
- axios에 비해 부족한 기능
- 사용 예시
const url = "http://jsonplaceholder.typicode.com/todos";
fetch(url)
.then(response => response.json())
.then(console.log());
- 개발자가 일일히 then() 안에 모든 케이스에 대한 HTTP 에러 처리를 해야 한다.
- 예시
const url = "https://jsonplaceholder.typicode.com/todos";
fetch(url)
.then((response) => {
if (!response.ok) {
throw new Error(
`This is an HTTP error: The status is ${response.status}`
);
}
return response.json();
})
.then(console.log)
.catch((err) => {
console.log(err.message);
});
axios
const url = "http://jsonplaceholder.typicode.com/todos";
axios.get(url).then(response => console.log(response.data))
const url = "https://jsonplaceholder.typicode.com/todos";
axios
.get(url)
.then((response) => console.log(response.data))
.catch((err) => {
console.log(err.message);
});
const url = "https://jsonplaceholder.typicode.com/todos";
axios
.get(url)
.then((response) => console.log(response.data))
.catch((err) => {
if (err.response) {
const { status, config } = err.response;
if (status === 404) {
console.log(`${config.url} not found`);
}
if (status === 500) {
console.log("Server error");
}
} else if (err.request) {
console.log("Error", err.message);
} else {
console.log("Error", err.message);
}
});