ebike-plus-ui/src/api/index.ts
2024-05-19 23:43:49 +08:00

51 lines
1.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import axios from "axios";
import { useRouter } from "vue-router";
const router = useRouter();
// 创建axios实例
const service = axios.create({
baseURL: "https://mock.apifox.com/m1/4457302-4103374-default",
timeout: 5000
});
// 请求拦截器
service.interceptors.request.use(
function (config: any) {
// 发送请求之前做什么
// 获取token鉴权
console.log("token?", localStorage.getItem("user-info"));
let userInfo: any = {};
if (localStorage.getItem("user-info")) {
userInfo = JSON.parse(localStorage.getItem("user-info") as string);
}
if (userInfo.token) {
// 有token在请求头中携带token
config.headers.Authorization = userInfo.token;
} else {
// 如果没有token则不允许发送请求并且跳转至登录页要求登录获取对应的token
if (config.url !== "/login") {
router.push("/login");
Promise.reject("未登录");
}
}
return config;
},
function (error: any) {
// 请求错误
return Promise.reject(error);
}
);
// 响应拦截器
service.interceptors.response.use(
function (response: any) {
return response.data;
},
function (error: any) {
console.log("响应拦截", error, router);
console.log("身份信息过期");
localStorage.removeItem("user-info");
router.push("/login");
return Promise.reject(error);
}
);
export default service;