|
|
import Cookies from 'js-cookie'
|
|
|
|
|
|
import axios from 'axios'
|
|
|
import store from '../store'
|
|
|
|
|
|
const instance = axios.create({
|
|
|
baseURL: process.env.VUE_APP_API_URL,
|
|
|
timeout: 5000,
|
|
|
withCredentials: true
|
|
|
})
|
|
|
|
|
|
instance.interceptors.request.use(
|
|
|
config => {
|
|
|
// if(config.data.showloading || config.params.showloading){
|
|
|
// console.log('showloading')
|
|
|
// }
|
|
|
if (Cookies.get('token')) { // 判斷是否存在token,如果存在的話,則每個http header都加上token
|
|
|
config.headers.Authorization = `${Cookies.get('token')}`;
|
|
|
}
|
|
|
|
|
|
|
|
|
if (config.method === 'post') {
|
|
|
|
|
|
config.data = {
|
|
|
uid: Cookies.get('uid'),
|
|
|
...config.data
|
|
|
}
|
|
|
|
|
|
// if(config.data.showloading){
|
|
|
// console.log('showloading')
|
|
|
// delete config.data.showloading
|
|
|
// }
|
|
|
|
|
|
} else if (config.method === 'get') {
|
|
|
|
|
|
config.params = {
|
|
|
uid: Cookies.get('uid'),
|
|
|
...config.params
|
|
|
}
|
|
|
|
|
|
// if(config.params.showloading){
|
|
|
// console.log('showloading')
|
|
|
// delete config.params.showloading
|
|
|
// }
|
|
|
|
|
|
}
|
|
|
|
|
|
return config;
|
|
|
},
|
|
|
err => {
|
|
|
return Promise.reject(err);
|
|
|
}
|
|
|
);
|
|
|
|
|
|
instance.interceptors.response.use(
|
|
|
response => {
|
|
|
refreshToken(response)
|
|
|
|
|
|
return response
|
|
|
},
|
|
|
error => {
|
|
|
if (error.response) {
|
|
|
switch (error.response.status) {
|
|
|
case 401:
|
|
|
// 返回 401 清除token資訊並跳轉到登入頁面
|
|
|
store.commit(types.LOGOUT);
|
|
|
router.replace({
|
|
|
path: 'login',
|
|
|
query: {redirect: router.currentRoute.fullPath}
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
return Promise.reject(error.response.data) // 返回介面返回的錯誤資訊
|
|
|
});
|
|
|
|
|
|
function refreshToken(response) {
|
|
|
let token = response.headers.authorization
|
|
|
if (token) {
|
|
|
sessionStorage.setItem('token', token);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
export default async function ajax( url , data={} , type='GET' ){
|
|
|
|
|
|
let result
|
|
|
if(type.toUpperCase() === 'GET' ){
|
|
|
let queryStr = ''
|
|
|
|
|
|
Object.keys(data).forEach(key=>{
|
|
|
queryStr += key + '=' + data[key] + '&'
|
|
|
})
|
|
|
|
|
|
if(queryStr !== ''){
|
|
|
queryStr = queryStr.substring(0,queryStr.lastIndexOf('&'))
|
|
|
url += '?' + queryStr
|
|
|
}
|
|
|
|
|
|
result = await instance.get(url)
|
|
|
}else{
|
|
|
|
|
|
result = await instance.post(url,data)
|
|
|
}
|
|
|
return result.data
|
|
|
}
|
|
|
|
|
|
/*生成指定長度的隨機數*/
|
|
|
function randomCode(length) {
|
|
|
let chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
|
|
|
let result = "";
|
|
|
for (let i = 0; i < length; i++) {
|
|
|
let index = Math.ceil(Math.random() * 9);
|
|
|
result += chars[index];
|
|
|
}
|
|
|
return result;
|
|
|
} |