You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

115 lines
2.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}