Ajax
Asynchronous JavaScript and XML의 약어로 비동기적으로 서버와 상호작용하여 데이터를 가져오는 기술입니다.
- XMLHttpRequest를 통한 상호작용.
- 비동기적으로 작동하므로 요청과 응답이 완료될 때 까지 기다리지 않고 다른 작업을 수행할 수 있습니다.
왜 Ajax를 사용할까요?
HTML Form 요소를 이용하여 원하는 데이터를 가져올 수 있습니다
<form action="원하는 데이터 URL" method="get">
<button type="submit">
하지만 위의 방법으로 데이터를 받게되면 자동적으로 브라우저 전체에 새로고침이 일어납니다.
따라서 비동기적으로 데이터를 받아올 수 있는 Ajax를 사용합니다.
Ajax 기본 코드
//jQuery를 이용하여 사용합니다.
$.ajax({
type: "GET",
url: "여기에 URL을 입력",
data: {},
success: function(response){
console.log(response)
},
error: function(error) {
console.error(error);
}
})
Axios
Axios는 웹 브라우저와 Node.js환경에서 HTTP 요청을 처리하기 위한 JS 라이브러리 입니다.
- 간결하고 직관적인 문법
- Promise 기반의 라이브러리. 이를 통해 비동기적으로 작업을 처리합니다.
- 응답받은 데이터를 자동으로 JS 객체로 파싱합니다.
왜 Axios를 사용할까요?
- 위에서 말했듯 간편하고 가독성 좋은 문법으로 구조화 하기 쉽습니다
axios.get('여기에 URL을 입력')
.then(response => {
console.log('응답 데이터:', response.data);
})
.catch(error => {
console.error('에러:', error);
});
- 인터셉터 기능을 이용하여 요청/응답 이전 헤더를 수정하거나 에러 처리 로직을 추가할 수 있습니다.
Fetch API
Fetch API는 ES6에서 추가된 내장 API입니다.
- 모던 브라우저에 내장되어 있어 추가적인 설치가 필요 없습니다.
- Axios와 같이 Promise 기반으로 비동기 작업을 처리합니다.
왜 Fetch API를 사용할까요?
- 브라우저에 내장된 기능으로 라이브러리 설치가 따로 필요없습니다.
- Promise 기반으로 구조화하기 좋고 가독성이 좋습니다.
- JSON 데이터로 자동으로 파싱됩니다.
Fetch API 기본 코드
fetch('여기에 URL을 입력', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(postData),
})
.then(response => response.json())
.then(data => {
console.log('응답 데이터:', data);
})
.catch(error => {
console.error('에러:', error);
});
Ajax보다 Fetch API와 Axios가 사용되는 이유?
위 설명에서 봤듯이 Fetch API와 Axios는 Promise 기반으로 작동됩니다.
Promise 기반으로 작동 된다는 것이 어떤 것을 의미할까요?
기존 비동기 처리의 문제점
기존 비동기 처리 즉 Ajax의 비동기 처리는 API서버에서 응답값을 받을 수 있는지 아닌지에 대한 확신이 없습니다. 다음 응답이 아직 오지 않았는데, 이외의 코드, 로직이 실행된다면 문제가 발생할 수 있습니다. 이를 해결하기 위해서는 콜백함수를 사용하여 순서대로 작동시킬 수 있습니다.
콜백 함수를 이용한 코드
//Callback Hell
$.ajax({
type: "GET",
url: "여기에 URL을 입력",
data: {},
success: function(response){
if(response.ok){
$.ajax({
type: "GET",
url: "여기에 URL을 입력",
data: {},
success: function(response){
if(response.ok){
$.ajax({
type: "GET",
url: "여기에 URL을 입력",
data: {},
success: function(response){
console.log(response.data)
}
})
}
}
})
}
}
})
위와 같이 콜백함수를 이용하여 코드를 작성하는 것은 가독성이 매우 좋지 않습니다.
이를 Promise로 해결하였고, 따라서 Promise 기반으로 작성된 Axios라이브러리와 Fetch API를 사용하여 유지보수를 편리하게 사용할 수 있습니다.
Axios와 Fetch API
Axios는 따로 설치를 해주어야 하는 라이브러리이고, Fetch API는 브라우저에 내장된 API입니다. 간단한 Fetching 작업을 해줄 시에는 Fetch API, 더 많은 기능과 확장성을 요구할 시에는 Axios 라이브러리를 사용하면 되겠습니다!
'개발 상식' 카테고리의 다른 글
[개발 상식] 오버로딩과 오버라이딩(Overloading & Overriding) (0) | 2023.09.11 |
---|---|
[개발 상식] MSA(MicroService Architecture)란? (0) | 2023.08.29 |
[개발 상식] 메세지 큐란? (0) | 2023.07.28 |
[개발 상식] 선언적 프로그래밍과 명령적 프로그래밍, React.js와 선언적 프로그래밍 (0) | 2023.07.27 |
[개발 상식] 클린코드란? (0) | 2023.07.25 |