Ajax
🧑🏻💻 Ajax vs. Fetch API vs. Axios
Ajax, Fetch, Axios는 모두 JavaScript를 사용하여 브라우저가 서버로부터 웹페이지에 변경이 필요한 데이터만 비동기 방식으로 전송받아, 동적으로 변경할 필요가 있는 부분만 변경하는 프로그래밍 방식에 쓰이는 도구들이다.
위 도구들을 사용하면 필요한 데이터만 통신할 수 있고, 동적으로 데이터를 업데이트할 수 있어 깜박임 현상과 블로킹 현상을 방지할 수 있다.
✅ Asynchronous JS and XML
XML, JSON 등 다양한 데이터를 처리할 수 있으며, 기본적으로 XMLHttpRequest 객체를 사용한다.
XMLHttpRequest는 콜백 함수를 사용하여 비동기 작업을 처리한다.
상대적으로 낮은 수준의 API를 제공하므로 구현이 복잡할 수 있다.
✅ Fetch API
JSON 및 다른 형식의 데이터를 처리할 수 있으며, Promise를 기반으로 간단한 API를 제공한다.
XMLHttpRequest보다 더 간결한 코드를 작성할 수 있으며, Promise를 사용하여 비동기 작업을 처리한다.
✅ Axios library
브라우저 및 Node.js에서 사용할 수 있는 JavaScript HTTP 클라이언트 라이브러리이다.
JSON 데이터를 처리하는 데 적합하며, Promise를 기반으로 동작 한다.
✅ 주요 차이점
Ajax는 XMLHttpRequest를 사용하기 때문에 콜백 함수를 사용하여 비동기 요청 및 응답을 처리합니다. 이 때문에 후속 처리시 콜백 지옥 현상이나 에러 처리가 힘든 문제점이 있습니다.
Fetch API는 프로미스를 기반으로 비동기 요청 및 응답을 처리합니다. 따라서 Ajax에서 나타나는 콜백 지옥이나 에러 처리에 대한 문제점을 해결할 수 있습니다. 하지만 잘못된 url을 넘겼을 때 반환하 에러의 경우 불리안 값을 반환하여 if 문을 활용하여 명시적 에러 처리를 추가로 해주어야 하는 경우가 있습니다.
Axios 또한 Fetch API와 마찬가지로 Promise 기반으로 비동기 요청 및 응답을 처리합니다. 이때 axio는 Fetch보다 더 다양한 메서드는 물론 모든 HTTP 에러를 프로미스로 반환하기 때문에 모든 에러를 catch에서 처리할 수 있어 훨씬 편리합니다.
🧑🏻💻 JSON
✅ JS Object Natation
클라이언트와 서버 간의 HTTP 통신을 위한 텍스트 데이터 포멧이다.
JS에 종속되지 않는 언어 독립형 데이터 포맷이다.
작은 따옴표는 사용이 불가하다.
{
name: "최지훈",
"age": 5,
"happt": true,
"team": ["CS 잘 먹기", "일찍 끝내조"]
}
✅ 직렬화 (serializing)와 역직렬화 (deserializing)
- 클라이언트가 서버로 객체를 전송할 때 객체를 문자열화 하는 행위
const obj = {
name: "최지훈",
"age": 5,
"happt": true,
"team": ["CS 잘 먹기", "일찍 끝내조"]
}
//직렬화
const json = JSoN.stringify(obj):
// 역직렬화
const parsed = JSON.parse(json);
console.log(typeof parsed, parsed);
/*
object {
name: "최지훈",
"age": 5,
"happt": true,
"team": ["CS 잘 먹기", "일찍 끝내조"]
}
*/
참고 자료
- 모던 자바스크립트 Deep Dive