여태껏 Axios, Fetch가 뭔지도 잘 모르고, 그냥 API 호출할 때 사용하는 일종의 함수라고 생각하며 사용했다.
앞으로의 각오를 상기시키며,
JS에서 비동기 HTTP 통신을 위해 사용되는 Ajax, Axios, Fetch에 대해서 알아보자.
들어가기 전에, 비동기 통신과 동기 통신이란 무엇인지 살펴보고 오자.
Ajax란 Asynchronous JavaScript and XML의 약자이다.
Ajax는 빠르게 동작하는 동적인 웹 페이지를 만들기 위한 개발 기법 중 하나이다.
즉, Ajax는 JavaScript에서 비동기 방식으로 HTTP 통신이 가능하게 해준다.
var httpRequest = new XMLHTTPRequest();
var serverURL = "/examples/media/request_ajax.php?city=Seoul&zipcode=06141";
// GET 방식으로 요청을 보내면서 데이터를 동시에 전달
httpRequest.open("GET", serverURL, true);
httpRequest.send();
Axios는 브라우저, Node.js를 위한 Promise API를 활용하는 HTTP 비동기 통신 라이브러리이다.
return 값이 Promise 객체이므로 response 데이터를 다루기가 쉽다.
XSRF(Cross-site request forgery, CSRF)는 사이트 간 요청 위조로 웹 사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹 사이트에 요청하게 하는 공격을 말한다.
axios.get(`${URL}`)
.then(res => console.log(res)); // console.log 생략 가능
axios.post(`${URL}`, {
`${data}`
}).then(res => console.log(res)); // console.log 생략 가능
fetch는 ES6부터 내장된 JavaScript의 라이브러리이다.
Promise 기반으로 만들어졌기 때문에 Axios와 마찬가지로 데이터를 다루기에 어렵지 않고,
내장 라이브러리라는 장점으로 인해 코드 구현이 편리하고 간단하다.
const url = 'https://velog.io/@49crehbgr';
const resp = await fetch(url);
const data = await resp.json();
const url = 'https://velog.io/@49crehbgr';
const data = { username: "lunarmoon" };
const resp = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(data),
});
const data = await resp.json();
(npm install axios)
JSON.stringify()
)