Vue3에서 Composition API를 이용한 Axios 비동기 통신
Vue에서 권고하는 Promise 기반의 HTTP 라이브러리로서 웹 어플리케이션에서 서버와 HTTP 요청을 주고 받을 수 있다. 또 Promise를 사용하면 비동기식 처리 상에서 데이터가 넘어왔을 때만 해당 코드가 실행되도록 하는 콜백 처리를 해줄 수 있다. Axios 는 다음과 같은 기능을 제공한다.
- 브라우저를 위해 XMLHttpRequests 생성
- node.js를 위해 http 요청 생성
- Promise API를 지원
- 요청 및 응답 인터셉트
- 요청 및 응답 데이터 변환
- 요청 취소
- JSON 데이터 자동 변환
- XSRF를 막기위한 클라이언트 사이드 지원
지난 시간에 Vue에서 기본적인 Options API 문법으로 Axios를 이용한 비동기 통신을 하였다. 아래 링크를 참조하자.
Vue.js에서 Axios를 이용한 비동기 통신
Vue.js에서 Axios를 이용한 비동기 통신 Vue에서 권고하는 Promise 기반의 HTTP 라이브러리로서, Promise를 사용하면 비동기식 처리 상에서 데이터가 넘어왔을 때만 해당 코드가 실행되도록 하는 콜백 처
jiurinie.tistory.com
- 샘플 프로젝트 생성
> vue create axios-test
- Axios 설치
> npm install axios
# 또는
> yarn add axios
- JSON 테스트용 데이터
Axios 테스트하기 위해 아래 사이트에서 제공하는 REST API를 통한 JSON 데이터를 가져온다.
JSONPlaceholder - Free Fake REST API
{JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB. Tested with XV. Serving ~2 billion requests each month.
jsonplaceholder.typicode.com
https://jsonplaceholder.typicode.com/todos/1
- App.vue
Composition API 문법으로 Axios 라이브러리를 사용하였다.
<template>
<button @click="get">데이터 가져오기</button>
<div>{{ data }}</div>
</template>
<script>
import { ref } from 'vue';
import axios from "axios";
export default {
setup() {
let data = ref([]);
let id = ref(1);
const get = () => {
axios.get('https://jsonplaceholder.typicode.com/todos/' + id.value)
.then((result) => {
console.log(result.data);
data.value.push(result.data);
id.value++;
})
.catch((error) => {
console.log(error);
})
.finally(() => {
console.log("finally");
});
}
return {
data,
get,
};
},
};
<style></style>
> npm run serve
위 코드는 data라는 배열에 '데이터 가져오기' 버튼을 클릭할 때마다 Axios 라이브러리를 이용하여 위 API를 호출해 데이터를 가져와 화면에 출력하는 샘플 소스코드이다.
- Axios Docs
시작하기 | Axios Docs
시작하기 브라우저와 node.js에서 사용할 수 있는 Promise 기반 HTTP 클라이언트 라이브러리 Axios란? Axios는 node.js와 브라우저를 위한 Promise 기반 HTTP 클라이언트 입니다. 그것은 동형 입니다(동일한 코
axios-http.com
'Programming > Vue.js' 카테고리의 다른 글
vue3-tree 트리 컴포넌트 Axios(비동기)로 데이터 가져오기 (0) | 2023.06.08 |
---|---|
vue3-tree 트리 컴포넌트 라이브러리 (0) | 2023.06.08 |
Vue3에서 Composition API을 써야하는 이유? (0) | 2023.05.16 |
Vue.js에서 Vuex 사용하기(2) [state, actions, mutations] (0) | 2023.01.03 |
Vue.js에서 Vuex 설치 및 기본 사용 방법(1) (0) | 2022.12.30 |
댓글