Axios 란?
Axios는 브라우저, Node.js를 위한 Promise API를 활용하는 HTTP 비동기 통신 라이브러리이다. Axios는 Fetch API보다 사용이 간편하면서 추가적인 기능들이 포함되어 있다.
Fetch API vs Axios
Axios | Fetch API |
써드파티 라이브러리로 설치가 필요 | 빌트인 API라 별도의 설치 필요X |
자동으로 JSON데이터 형식으로 변환 | .json() 메서드를 사용해야 함 |
Axios 사용법
Axios는 써드파티 라이브러리이기 때문에 사용하기 위해서는 설치해야 한다. Axios는 fetch API와 기본 원리는 같다.
npm install axios
GET 요청
GET 요청은 일반적으로 정보를 요청하기 위해 사용되는 메서드이다.
- 첫번째 인자 : url주소 (필수)
- 두번째 인자 : 요청 시 사용할 수 있는 옵션들을 설정 (필수 X)
axios.get("url"[,config])
예시
아래는 fetch API와 axios GET 요청의 예이다.
또한, Promise 버젼과 Async / Await 버젼도 있으니 Promise와 Async / Await의 차이점도 같이 확인해보자.
GET 요청 : fetch API (Promise ver, Async/Await ver)
// ** Promise ver
fetch('https://koreanjson.com/users/1', { method: 'GET' })
.then((response) => response.json())
.then((json) => console.log(json))
.catch((error) => console.log(error));
// ** Async / Await ver
async function request() {
const response = await fetch('https://koreanjson.com/users/1', {
method: 'GET',
});
const data = await response.json();
console.log(data);
}
request();
GET 요청 : axios (Promise ver, Async/Await ver)
// axios를 사용하기 위해서는 설치한 axios를 불러와야 한다.
import axios from 'axios';
// **Promise ver
axios
.get('https://koreanjson.com/users/1')
.then((response) => { // response.json() 이 없다.
console.log(response);
const { data } = response; // 대신 response 객체 속 data 키 값만 가져와야 함.
console.log(data);
})
.catch((error) => console.log(error));
// **Async / Await ver
async function request() {
const response = await axios.get('https://koreanjson.com/users/1');
const { data } = response;
console.log(data);
}
request();
- 9번째 줄은 비구조 할당으로 response 객체에서 data 키에 해당되는 값들만 불러옴.
- 예)
let blog = {
owner : "noah",
url : "noahlogs.tistory.com",
getPost() {
console.log("ES6 문법 정리");
}
};
//기존 할당 방식
let owner = blog.owner
let getPost = blog.getPost()
//비구조 할당 방식
let { owner, getPost } = blog;
//각각 blog 객체의 owner , getPost() 의 데이터가 할당
POST 요청
POST 요청은 서버에게 데이터를 보내기 위해 사용되는 메서드이다.
- 첫번째 인자 : url주소 (필수)
- 두번째 인자 : 요청 시 보낼 데이터를 설정 (필수 X)
axios.post("url"[, data[, config]])
예시
POST 요청: fetch API (Promise ver, Async/Await ver)
// **Promise ver
fetch('https://koreanjson.com/users', {
method: 'POST',
headers: {
// JSON의 형식으로 데이터를 보내준다고 서버에게 알려주는 역할이다.
'Content-Type': 'application/json',
},
body: JSON.stringify({ nickName: 'ApeachIcetea', age: 20 }),
})
.then((response) => response.json())
.then((json) => console.log(json))
.catch((error) => console.log(error));
// **Async / Await ver
async function request() {
const response = await fetch('https://koreanjson.com/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ nickName: 'ApeachIcetea', age: 20 }),
});
const data = await response.json();
console.log(data);
}
request();
POST 요청 : axios (Promise ver, Async/Await ver)
// **axios를 사용하기 위해서는 설치한 axios를 불러와야 한다.
import axios from 'axios';
// **Promise ver
axios
.post('https://koreanjson.com/users', { nickName: 'ApeachIcetea', age: '20' })
.then((response) => {
const { data } = response;
console.log(data);
})
.catch((error) => console.log(error));
// **Async / Await ver
async function request() {
const response = await axios.post('https://koreanjson.com/users', {
name: 'ApeachIcetea',
age: '20',
});
const { data } = response;
console.log(data);
}
request();
728x90
'FE > JavaScript' 카테고리의 다른 글
[JS] 비동기 실습하기 (0) | 2023.03.21 |
---|---|
[JS] fetch polyfill (0) | 2023.03.21 |
[JS] 비동기 다시 정리 : callback / promise / async, await (0) | 2023.03.20 |
[JS] 비동기 코드 제어하기 : callback / promise / async, await (0) | 2023.03.20 |
[JS] 비동기 흐름 : 배열 메서드 구현해보기 (Underbar) - 하 (0) | 2023.03.19 |