// 요청 인터셉터 추가하기
axios.interceptors.request.use(function (config) {
// 1. 요청이 전달되기 전에 작업 수행
return config;
}, function (error) {
// 2. 요청 오류가 있는 작업 수행
return Promise.reject(error);
});
// 응답 인터셉터 추가하기
axios.interceptors.response.use(function (response) {
// 3. 2xx 범위에 있는 상태 코드는 이 함수를 트리거 합니다.
// 응답 데이터가 있는 작업 수행
return response;
}, function (error) {
// 4. 2xx 외의 범위에 있는 상태 코드는 이 함수를 트리거 합니다.
// 응답 오류가 있는 작업 수행
return Promise.reject(error);
});
// 요청 인터셉터 추가하기
axios.interceptors.request.use(config=>{
// 1. 요청이 전달되기 전에 작업 수행
return config;
}, error=>{
// 2. 요청 오류가 있는 작업 수행
return Promise.reject(error);
});
// 응답 인터셉터 추가하기
axios.interceptors.response.use(response=>{
// 3. 2xx 범위에 있는 상태 코드는 이 함수를 트리거 합니다.
// 응답 데이터가 있는 작업 수행
return response;
}, error=>{
// 4. 2xx 외의 범위에 있는 상태 코드는 이 함수를 트리거 합니다.
// 응답 오류가 있는 작업 수행
return Promise.reject(error);
});
/src/store/index.js
const store = createStore({
state: {
loading:false
}
});
import axios from "axios";
import store from "@/store";
// 요청 인터셉터 추가
axios.interceptors.request.use(config=>{
// 1. 요청이 전달되기 전에 작업 수행
store.commit("loadingStart");
return config;
}, error=>{
// 2. 요청 오류가 있는 작업 수행
store.commit("loadingFinish");
return Promise.reject(error);
});
// 응답 인터셉터 추가
axios.interceptors.response.use(response=>{
// 3. 2xx 범위에 있는 상태 코드는 이 함수를 트리거 합니다.
store.commit("loadingFinish");
return response;
}, error=>{
// 4. 2xx 외의 범위에 있는 상태 코드는 이 함수를 트리거 합니다.
store.commit("loadingFinish");
return Promise.reject(error);
});
export default axios;
npm install vue-spinner
/src/App.vue
<template>
<!-- 생략 -->
<!-- pulse-loader component 화면 배치 -->
<pulse-loader :loading="true"></pulse-loader>
</template>
<script>
//pulse loader import
import PulseLoaderVue from "vue-spinner/src/PulseLoader.vue";
export default {
/* 생략 */
components: {
//pulse loader 사용 등록
"pulse-loader":PulseLoaderVue
},
}
</script>
<style>
/* 생략 */
/* vue-spinner가 화면 정중앙에 표시되도록 디자인 설 */
.v-spinner {
position: fixed !important;
top:50%;
left:50%;
transform:translate(-50%, -50%);
}
</style>