Files
cunkebao_v3/Store_vue/api/config/index.js
2025-11-03 14:07:15 +08:00

97 lines
2.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// API配置文件
// 基础配置
//export const BASE_URL = 'http://yishi.com'
export const BASE_URL = 'https://ckbapi.quwanzhi.com'
// APP配置
export const APP_CONFIG = {
version: '1.1.0', // 当前APP版本号与manifest.json保持一致
type: 'aiStore' // APP类型标识
}
// 获取请求头
const getHeaders = (options = {}) => {
const token = uni.getStorageSync('token');
return {
'content-type': 'application/json',
...(token ? { 'Authorization': `Bearer ${token}` } : {}),
...options.header
};
};
// 请求配置
export const request = (options) => {
return new Promise((resolve, reject) => {
const requestTask = uni.request({
url: BASE_URL + options.url,
method: options.method || 'GET',
data: options.data,
header: getHeaders(options),
success: (res) => {
if (res.statusCode === 200) {
resolve(res.data)
} else if (res.statusCode === 401) {
// token过期或无效
uni.removeStorageSync('token');
uni.removeStorageSync('member');
uni.removeStorageSync('token_expired');
uni.showToast({
title: '登录已过期,请重新登录',
icon: 'none'
});
setTimeout(() => {
uni.reLaunch({
url: '/pages/login/index'
});
}, 1500);
reject(res);
} else {
handleError(res)
reject(res)
}
},
fail: (err) => {
handleError(err)
reject(err)
}
})
// 超时处理
setTimeout(() => {
if (requestTask) {
requestTask.abort()
handleError({ message: '请求超时,请稍后重试' })
reject({ message: '请求超时,请稍后重试' })
}
}, options.timeout || 30000)
})
}
// 错误处理函数
const handleError = (error) => {
let message = '网络请求失败,请稍后重试'
if (error.errMsg && error.errMsg.includes('解析失败')) {
message = '网页解析失败,可能是不支持的网页类型,请稍后重试'
}
console.log(message)
// uni.showToast({
// title: message,
// icon: 'none',
// duration: 2000
// })
}
// 请求重试函数
export const requestWithRetry = async (options, maxRetries = 3) => {
for (let i = 0; i < maxRetries; i++) {
try {
return await request(options)
} catch (error) {
if (i === maxRetries - 1) throw error
await new Promise(resolve => setTimeout(resolve, 1000 * (i + 1)))
}
}
}