133 lines
3.1 KiB
JavaScript
133 lines
3.1 KiB
JavaScript
// HTTP模块配置文件
|
||
|
||
/**
|
||
* 环境配置
|
||
*/
|
||
const ENV_CONFIG = {
|
||
// 开发环境
|
||
development: {
|
||
baseURL: 'https://dev-api.pet-ai.com',
|
||
timeout: 30000
|
||
},
|
||
// 测试环境
|
||
testing: {
|
||
baseURL: 'https://test-api.pet-ai.com',
|
||
timeout: 30000
|
||
},
|
||
// 生产环境
|
||
production: {
|
||
baseURL: 'https://api.pet-ai.com',
|
||
timeout: 60000
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 当前环境 (可根据实际情况动态设置)
|
||
*/
|
||
let CURRENT_ENV = 'development' // development | testing | production
|
||
|
||
/**
|
||
* HTTP基础配置
|
||
*/
|
||
export const HTTP_CONFIG = {
|
||
// 当前环境配置
|
||
...ENV_CONFIG[CURRENT_ENV],
|
||
|
||
// 登录页面路径
|
||
loginPage: '/pages/login/login',
|
||
|
||
// 存储键名配置
|
||
storageKeys: {
|
||
token: 'token',
|
||
refreshToken: 'refreshToken',
|
||
userInfo: 'userInfo'
|
||
},
|
||
|
||
// 请求重试配置
|
||
retry: {
|
||
times: 2, // 重试次数
|
||
delay: 1000, // 重试延迟(毫秒)
|
||
statusCodes: [500, 502, 503, 504] // 需要重试的状态码
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 不需要鉴权的接口列表
|
||
* 注意:只需要配置不需要token的接口,其他接口默认都需要鉴权
|
||
*/
|
||
export const NO_AUTH_APIS = [
|
||
// 用户认证相关
|
||
'/auth/login',
|
||
'/auth/register',
|
||
'/auth/wx-login',
|
||
'/auth/refresh',
|
||
|
||
// 公开浏览的接口
|
||
'/ai/knowledge', // AI知识库
|
||
'/adoption/pets', // 浏览待领养宠物
|
||
'/adoption/pets/search', // 搜索宠物
|
||
'/adoption/pets/filter', // 筛选宠物
|
||
'/adoption/organizations', // 领养机构列表
|
||
'/reviews', // 查看评价
|
||
'/system/config', // 系统配置
|
||
'/system/version', // 版本信息
|
||
'/system/check-update', // 检查更新
|
||
'/sms/send', // 发送短信验证码
|
||
'/sms/verify', // 验证短信验证码
|
||
'/common/regions' // 地区数据
|
||
]
|
||
|
||
/**
|
||
* 检查接口是否需要鉴权
|
||
* @param {String} url 接口URL
|
||
* @returns {Boolean} 是否需要鉴权
|
||
*/
|
||
export function checkApiAuth(url) {
|
||
// 移除查询参数,只保留路径
|
||
const path = url.split('?')[0]
|
||
|
||
// 检查是否在不需要鉴权的列表中
|
||
for (const noAuthApi of NO_AUTH_APIS) {
|
||
// 支持通配符匹配
|
||
if (noAuthApi.includes('*')) {
|
||
const regex = new RegExp('^' + noAuthApi.replace(/\*/g, '.*') + '$')
|
||
if (regex.test(path)) {
|
||
return false
|
||
}
|
||
} else if (path === noAuthApi || path.startsWith(noAuthApi + '/')) {
|
||
return false
|
||
}
|
||
}
|
||
|
||
// 默认需要鉴权
|
||
return true
|
||
}
|
||
|
||
/**
|
||
* 添加不需要鉴权的接口
|
||
* @param {String|Array} apis 接口路径或接口路径数组
|
||
*/
|
||
export function addNoAuthApis(apis) {
|
||
if (Array.isArray(apis)) {
|
||
NO_AUTH_APIS.push(...apis)
|
||
} else {
|
||
NO_AUTH_APIS.push(apis)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 设置当前环境
|
||
* @param {String} env 环境名称 (development | testing | production)
|
||
*/
|
||
export function setEnvironment(env) {
|
||
if (ENV_CONFIG[env]) {
|
||
CURRENT_ENV = env
|
||
// 更新HTTP配置
|
||
Object.assign(HTTP_CONFIG, ENV_CONFIG[env])
|
||
console.log(`HTTP环境已切换到: ${env}`)
|
||
console.log(`当前baseURL: ${HTTP_CONFIG.baseURL}`)
|
||
} else {
|
||
console.error(`无效的环境名称: ${env}`)
|
||
}
|
||
}
|