Vue.js에서 axios를 사용하는 방법은 무엇인가요?
_____A1: axios는 HTTP 요청을 보내기 위한 자바스크립트 라이브러리입니다. Vue.js에서 API 호출, 서버와의 통신 등에 자주 사용됩니다.
Q2: Vue.js 프로젝트에 axios를 어떻게 설치하나요?
A2: npm 또는 yarn을 사용하여 설치합니다.
```bash
npm install axios
```
또는
```bash
yarn add axios
```
Q3: Vue 컴포넌트에서 axios를 어떻게 불러와서 사용하나요?
A3: 컴포넌트 상단에 axios를 import한 후, methods나 lifecycle 훅 안에서 사용합니다.
```javascript
import axios from 'axios';
export default {
data() {
return {
info: null,
error: null,
};
},
methods: {
fetchData() {
axios.get('https://api.example.com/data')
.then(response => {
this.info = response.data;
})
.catch(error => {
this.error = error;
});
}
},
mounted() {
this.fetchData();
}
};
```
Q4: Vue 3에서 Composition API를 사용하는 경우 axios를 어떻게 사용하나요?
A4: `setup()` 함수 내에서 axios를 호출하고, reactive 상태를 관리합니다.
```javascript
import { ref, onMounted } from 'vue';
import axios from 'axios';
export default {
setup() {
const info = ref(null);
const error = ref(null);
const fetchData = async () => {
try {
const response = await axios.get('https://api.example.com/data');
info.value = response.data;
} catch (err) {
error.value = err;
}
};
onMounted(fetchData);
return {
info,
error
};
}
};
```
Q5: axios 인스턴스를 Vue 전역에서 사용하는 방법은?
A5: axios 인스턴스를 만들고 Vue 애플리케이션에 프로토타입 또는 전역 속성으로 등록해 재사용 가능합니다.
```javascript
// api.js
import axios from 'axios';
const apiClient = axios.create({
baseURL: 'https://api.example.com',
timeout: 10000,
});
export default apiClient;
// main.js (Vue 3)
import { createApp } from 'vue';
import App from './App.vue';
import apiClient from './api';
const app = createApp(App);
app.config.globalProperties.$api = apiClient;
app.mount(' app');
// 컴포넌트 내 사용
export default {
mounted() {
this.$api.get('/data').then(...);
}
};
```
Q6: axios 요청 시 Vue.js에서 요청 헤더 추가는 어떻게 하나요?
A6: 요청 시 config 객체에 headers를 추가합니다.
```javascript
axios.get('/data', {
headers: {
Authorization: 'Bearer token',
}
});
```
Q7: axios 요청을 취소(Cancel)하는 방법은?
A7: axios의 CancelToken을 사용해 요청을 취소할 수 있습니다.
```javascript
import axios from 'axios';
const CancelToken = axios.CancelToken;
let cancel;
axios.get('/data', {
cancelToken: new CancelToken(function executor(c) {
cancel = c;
})
}).catch(thrown => {
if (axios.isCancel(thrown)) {
console.log('Request canceled', thrown.message);
}
});
// 요청 취소
cancel('Operation canceled by the user.');
```
Q8: axios를 사용한 POST 요청 예시는?
A8: POST 요청은 두 번째 인자에 데이터를 전달합니다.
```javascript
axios.post('/submit', {
name: 'John',
age: 30
})
.then(response => {
console.log(response.data);
});
```
Q9: 비동기 요청 시 axios와 async/await를 어떻게 활용하나요?
A9: async 함수 내부에서 await로 axios 요청 결과를 받습니다.
```javascript
async function fetchUser() {
try {
const response = await axios.get('/user');
console.log(response.data);
} catch (error) {
console.error(error);
}
}
```
Q10: axios 요청 중 로딩 상태 처리는 어떻게 하나요?
A10: data 속성에 로딩 상태를 선언하고 요청 전후로 상태를 갱신합니다.
```javascript
data() {
return {
isLoading: false,
info: null,
};
},
methods: {
async fetchData() {
this.isLoading = true;
try {
const response = await axios.get('/data');
this.info = response.data;
} catch (e) {
console.error(e);
} finally {
this.isLoading = false;
}
}
}
```
---
이처럼 Vue.js 에서 axios는 API 통신을 간편하게 해주는 라이브러리로, 설치 후 import하여 컴포넌트 내에서 다양한 방식으로 활용할 수 있습니다.
작성자:
이지후 [비회원]
| 작성일자: 1년 전
2024-09-14 17:14:42
조회수: 140 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 140 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.