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
|