vue-cli-plugin-axios-ts
Version:
Vue-cli-3 plugin: axios for ts
60 lines (51 loc) • 1.34 kB
text/typescript
import Vue, { PluginObject } from 'vue';
import axios from 'axios';
// Full config: https://github.com/axios/axios#request-config
// axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || '';
// axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
const config = {
// baseURL: process.env.baseURL || process.env.apiUrl || ""
// timeout: 60 * 1000, // Timeout
// withCredentials: true, // Check cross-site Access-Control
};
const _axios = axios.create(config);
_axios.interceptors.request.use(
(cfg) => {
// Do something before request is sent
return cfg;
},
(err) => {
// Do something with request error
return Promise.reject(err);
},
);
// Add a response interceptor
_axios.interceptors.response.use(
(res) => {
// Do something with response data
return res;
},
(err) => {
// Do something with response error
return Promise.reject(err);
},
);
const Plugin: PluginObject<any> = {
install: (Vue) => {
Vue.$axios = _axios;
},
};
Plugin.install = (Vue) => {
Vue.$axios = _axios;
window.axios = _axios;
Object.defineProperties(Vue.prototype, {
$axios: {
get() {
return _axios;
},
},
});
};
Vue.use(Plugin);
export default Plugin;