@red-code-mp/mp-builder
Version:
* [Structure](#Structure) * [Route](#Route) * [Endpoints](#Endpoints) * [Table](#Table) * [Lang](#Lang) * [Menu](#Menu) * [Toast](#Toast)
63 lines (55 loc) • 1.67 kB
JavaScript
import axios from 'axios'
import store, {mapGetters} from '../vuex/index'
const axiosInstance = axios.create({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'lang': Config.get('lang'),
'Authorization': store.getters['Auth/getToken']
},
baseURL: '/'
})
/**
* @author khalid
* process the request before sending
*/
axiosInstance.interceptors.request.use(function (config) {
return config
},
function (error) {
return Promise.reject(error);
});
/**
* @author khalid
* process the response before it is passed
*/
axiosInstance.interceptors.response.use(
response => {
if (response.status === 200 || response.status === 201)
return Promise.resolve(response)
else
return Promise.reject(response)
}, error => {
if (error.response.status) {
switch (error.response.status) {
case 400:
Toast.$emit('danger-message', error.response.data.message, 'Validation errors!')
break;
case 401:
Toast.$emit('danger-message', error.response.statusText, 'Validation errors!')
break;
case 403:
break;
case 404:
break;
case 502:
break;
case 500:
Toast.$emit('danger-message', error.response.statusText, 'Operation failed!')
break;
}
}
return Promise.reject(error.response);
}
)
export default axiosInstance