| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- // @ts-ignore
- import Fly from "flyio/dist/npm/wx"
- import config from "@/config";
- import { useUserStore } from '@/store/userStore';
- const { serverBaseUrl } = config;
- const requestConfig = {
- baseURL: serverBaseUrl,
- timeout: 30000,
- headers: {
- "Content-Type": "application/json",
- },
- withCredentials: false,
- };
- const fly = new Fly();
- fly.config = requestConfig;
- const refreshFly = new Fly();
- refreshFly.config = requestConfig;
- const cleanParams = (obj: any) => {
- if (!obj || typeof obj !== 'object') return obj
- Object.keys(obj).forEach(k => {
- const v = obj[k]
- if (v === undefined || v === null) {
- delete obj[k]
- } else if (typeof v === 'object') {
- cleanParams(v)
- }
- })
- return obj
- }
- fly.interceptors.request.use((request: any) => {
- const userStore = useUserStore();
- const token = userStore.accessToken;
- if (request.headers['TempToken']) {
- request.headers['Authorization'] = `Bearer ${request.headers['TempToken']}`;
- } else if (token) {
- request.headers['Authorization'] = 'Bearer ' + token;
- }
- const examType = userStore.getExamType;
- const location = userStore.getLocation;
- if (examType) {
- request.headers['examType'] = examType;
- }
- if (location) {
- request.headers['location'] = encodeURIComponent(location);
- }
- if (request.params) {
- request.params = cleanParams(request.params)
- }
- if (request.body) {
- request.body = cleanParams(request.body)
- }
- return request;
- });
- fly.interceptors.response.use(
- function (this: { lock: () => void; unlock: () => void }, response: any) { // 不要使用箭头函数,否则调用this.lock时this指向不对
- const result = response.data;
- try {
- const { code, msg } = result;
- if (code === 401) {
- logout();
- return Promise.reject({ code: 401, msg: '未授权,请重新登录', result });
- } else {
- if (code !== 200) {
- uni.$ie.showToast(msg);
- return Promise.reject(result);
- } else {
- return Promise.resolve(result);
- }
- }
- } catch (err) {
- // 响应数据格式异常,reject 错误对象而不是 result
- return Promise.reject(err);
- }
- },
- function (err: Error, promise: Promise<any>) {
- return Promise.reject(err);
- }
- );
- function logout() {
- const userStore = useUserStore();
- userStore.logout();
- uni.reLaunch({
- url: '/pagesSystem/pages/login/login'
- });
- }
- export default fly;
|