Files
jianbing/utils/request.js
2025-04-22 23:04:56 +08:00

108 lines
2.0 KiB
JavaScript

import axios from "../js_sdk/xtshadow-axios/axios.min"
import store from "../store"
import {
paramsToStr,
currentPage,
tabbarList,
acountList
} from "./tools"
import Cache from "./cache"
import {
TOKEN,
BACK_URL
} from "../config/cachekey"
import {
baseURL
} from "../config/app"
import {
getWxCode,
toLogin,
wxMnpLogin
} from "./login"
let index = 0;
function checkParams(params) {
if (typeof params != "object") return params;
for (let key in params) {
const value = params[key];
if (value === null || value === undefined || value === "") {
delete params[key];
}
}
return params;
}
const service = axios.create({
baseURL: `${baseURL}/api/`,
timeout: 10000,
header: {
"content-type": "application/json",
},
});
// request拦截器
service.interceptors.request.use(
(config) => {
config.data = checkParams(config.data);
config.params = checkParams(config.params);
if (config.method == "GET") {
config.url += paramsToStr(config.params);
}
config.header.token = config.header.token || Cache.get(TOKEN);
return config;
},
(error) => {
// Do something with request error
console.log(error); // for debug
Promise.reject(error);
}
);
// response 拦截器
service.interceptors.response.use(
async (response) => {
if (response.data) {
const {
code,
show,
msg
} = response.data;
const {
route,
options
} = currentPage();
if (code == 0 && show && msg) {
uni.showToast({
title: msg,
icon: "none",
});
} else if (code == -1) {
store.commit("LOGOUT");
//#ifdef MP-WEIXIN
wxMnpLogin();
// #endif
//#ifdef H5 || APP-PLUS
if (route && !tabbarList.includes(route)) {
toLogin();
}
// #endif
//#ifdef H5
if (!acountList.includes(route)) {
Cache.set(BACK_URL, `/${route}${paramsToStr(options)}`);
}
// #endif
}
}
return Promise.resolve(response.data);
},
(error) => {
// tryHideFullScreenLoading()
console.log(error);
console.log("err" + error); // for debug
return Promise.reject(error);
}
);
export default service;