108 lines
2.8 KiB
TypeScript
108 lines
2.8 KiB
TypeScript
import axios from "axios";
|
||
import Taro from "@tarojs/taro";
|
||
import { Toast } from "@nutui/nutui-react-taro";
|
||
|
||
const request = axios.create({
|
||
baseURL: process.env.TARO_API_DOMAIN,
|
||
});
|
||
|
||
// 创建全局的axios实例,并安装请求拦截器
|
||
request.interceptors.request.use(
|
||
(config) => {
|
||
// 在发送请求之前做些什么
|
||
const saToken = Taro.getStorageSync("saToken");
|
||
if (saToken) {
|
||
config.headers.saToken = saToken;
|
||
}
|
||
|
||
const slug = Taro.getStorageSync("userRoleVO")?.slug;
|
||
if (slug) {
|
||
config.headers["Xh-Role-Slug"] = slug;
|
||
}
|
||
|
||
return config;
|
||
},
|
||
(error) => {
|
||
// 处理请求错误
|
||
return Promise.reject(error);
|
||
},
|
||
);
|
||
|
||
// 在获取到响应后,安装响应拦截器
|
||
request.interceptors.response.use(
|
||
async (response) => {
|
||
console.log("response", response);
|
||
const {
|
||
data: { success, data },
|
||
} = response;
|
||
// 处理响应成功的情况
|
||
if (success) {
|
||
const saToken = data?.meta?.accessToken;
|
||
if (saToken) {
|
||
Taro.setStorageSync("saToken", saToken);
|
||
Taro.setStorageSync("user", data.userVO);
|
||
Taro.setStorageSync("userRoleVO", data.userRoleVOList?.[0]);
|
||
}
|
||
} else {
|
||
// 异常处理
|
||
if (response.data.errCode === "403") {
|
||
Toast.show("toast", {
|
||
icon: "fail",
|
||
title: "暂无权限",
|
||
content: response.data.errMessage,
|
||
});
|
||
}
|
||
|
||
// 如果是401则重新登录,然后重新发起请求
|
||
if (response.data.errCode === "401") {
|
||
// 移除缓存
|
||
Taro.removeStorageSync("saToken");
|
||
Taro.removeStorageSync("user");
|
||
Taro.removeStorageSync("userRoleVO");
|
||
// const { code } = await Taro.login();
|
||
// const data = await wxMaLogin(code);
|
||
// if (data) {
|
||
// response.config.headers.saToken = `${Taro.getStorageSync("saToken")}`;
|
||
// return request(response.config);
|
||
// }
|
||
// 跳转到登录页面
|
||
Taro.navigateTo({
|
||
url: "/pages/public/login/index",
|
||
});
|
||
return response;
|
||
}
|
||
|
||
console.log("response.data.errCode", response.data.errCode);
|
||
if (response.data.errCode === "400") {
|
||
Toast.show("toast", {
|
||
icon: "fail",
|
||
title: "请求失败",
|
||
content: response.data.errMessage,
|
||
});
|
||
}
|
||
|
||
if (response.data.errCode === "500") {
|
||
Toast.show("toast", {
|
||
icon: "fail",
|
||
title: "服务器错误",
|
||
content: response.data.errMessage,
|
||
});
|
||
} else {
|
||
Toast.show("toast", {
|
||
icon: "fail",
|
||
title: "请求失败",
|
||
content: response.data.errMessage,
|
||
});
|
||
}
|
||
}
|
||
|
||
return response;
|
||
},
|
||
(error) => {
|
||
// 处理响应错误的情况
|
||
return Promise.reject(error);
|
||
},
|
||
);
|
||
|
||
export default request;
|