React에서 AJAX
(비동기 웹 애플리케이션)를 구현하기 위해서 JavaScript 내장 객체인 XMLRequest를 사용하거나 다른 HTTP Client를 사용해야 한다.
어떤 HTTP Client 라이브러리를 사용하는게 좋을까?
React와 함께 쓰면 좋은 HTTP Client 라이브러리 중 하나가 Axios이다. (리액트 외에도 굉장히 많이 사용되는 라이브러리이다.)
👉 JavaScript를 통해서 서버에 데이터를 요청하는 것
AJAX란 JS 라이브러리 중 하나로 비동기 자바스크립트와 xml의 약자이다.
브라우저가 가진 XMLHttpRequest 객체를 이용한 전체 페이지를 새로 고치지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법이며 자바스크립트를 사용한 통신, 클라이언트와 서버 간에 XML 데이터를 주고 받는 기술이다.
👉 브라우저와 node.js에서 사용할 수 있는 Promise 기반 HTTP 클라이언트 라이브러리
Axios는 브라우저, Node.js를 위해서 만들어진 Promise API를 활용하는 HTTP 비동기 통신 라이브러리이다. 백엔드와 프론트엔드 간에 통신을 위해 만들어진 AJAX도 더불어 사용하기도 한다.
yarn add axios
import axios from "axios";
// axios는 axios.요청타입으로 요청을 보낼 수 있다. 이 방식을 별칭 메서드라고 부른다.
// 예시)
// axios.get(url, config)
// axios.post(url, data, config)
// 어떤 요청을 보낼 지, 별칭 메서드 사용
axios.post('/cat', // 미리 약속한 주소
{name: 'perl', status: 'cute'}, // 서버가 필요로 하는 데이터를 넘겨주고,
{headers: { 'Authorization': '내 토큰 보내주기' },} // 누가 요청했는 지 알려준다 (config에서)
).then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
export const authApi = {
// e.g) 회원 가입
signup: someData =>
instance.post("api/user", {
someData: someData,
someOtherData: someOtherData
}),
// e.g) 유저 프로필 변경
editUserProfile: (someData) =>
instance.put(`api/user/${userId}`, {
someData: someData,
someOtherData: someOtherData
}),
ㅋㅋ감사합니다 도움이 정말 많이 됐네요