import Request from "uview-plus/libs/luch-request/index" import configEnv from "@/config/env.js"; import {getEnvObj} from "@/utils/index.js"; import { useUserStore } from "@/store/index.js"; import website from '@/config/website' import { Base64} from 'js-base64' const httpGd = new Request() export function request (config) { return new Promise((resolve, reject) => { httpGd .request(config) .then(res => { resolve(res) }) .catch(err => { reject(err) }) }) } // 请求拦截器 function requestInterceptors(httpGd) { httpGd.interceptors.request.use((config) => { const {detail} = useUserStore().$state?.userInfo || {} // 假设有token值需要在头部需要携带 let accessToken = useUserStore()?.$state?.userInfo?.gd_access_token; if (accessToken) { config.header['Blade-Auth'] = 'bearer ' + accessToken; } if (detail?.areaCode) { config.header['areaCode'] = detail.areaCode } // 安全请求header config.header['Blade-Requested-With'] = 'BladeHttpRequest'; // 客户端认证参数 config.header['Authorization'] = 'Basic ' + Base64.encode(website.clientId + ':' + website.clientSecret); return config }, config => { // 可使用async await 做异步操作 return Promise.reject(config) }) } function responseInterceptors(httpGd) { httpGd.interceptors.response.use((response) => { let res = response const status = res.data.error_code || res.data.code || res.statusCode const message = res?.data?.msg || res?.data?.error_description || res?.data?.message || '系统错误' if (status !== 200) { uni.showToast({title: message, icon: 'none'}); return Promise.reject(response); } return response; }, (response) => { let res = response const message = res?.data?.msg || res?.data?.error_description || res?.data?.message || '系统错误' /* 对响应错误做点什么 (statusCode !== 200)*/ uni.showToast({title: message, icon: 'none'}); if (response.statusCode === 401) { const pages = getCurrentPages() const currentPage = pages[pages.length - 1] uni.reLaunch({ url: `/pages/login/index?redirect=/${currentPage.route}` }) } return Promise.reject(response) }) } // 引入拦截器配置 export function setupRequest () { httpGd.setConfig(defaultConfig => { /* defaultConfig 为默认全局配置 */ defaultConfig.baseURL = getEnvObj().VITE_API_BASE_URL_GD // #ifdef H5 if (import.meta.env.VITE_APP_PROXY === "true") { defaultConfig.baseURL = import.meta.env.VITE_API_PREFIX_GD } // #endif return defaultConfig }) requestInterceptors(httpGd) responseInterceptors(httpGd) } export function get (url, config) { return request({ ...config, url, method: "GET" }) } export function post (url, config) { return request({ ...config, url, method: "POST" }) } export function upload (url, config) { return request({ ...config, url, method: "UPLOAD" }) } export function download (url, config) { return request({ ...config, url, method: "DOWNLOAD" }) } export default setupRequest