Vue3+TS全局配置信息外放,axios读取配置信息,动态挂载,实现一客户一配置文件
import axios from 'axios';
import { ElMessageBox } from 'element-plus';
// 假设configs是从服务器获取的客户端配置信息
const configs = {
'clientA': {
baseURL: 'https://api.clienta.com',
timeout: 1000,
// 其他配置...
},
'clientB': {
baseURL: 'https://api.clientb.com',
timeout: 1000,
// 其他配置...
},
// 更多客户端配置...
};
// 创建一个函数,用于根据客户端ID动态创建axios实例
function createAxiosInstance(clientId: string): axios.AxiosInstance {
const config = configs[clientId];
if (!config) {
throw new Error(`没有为客户端${clientId}配置信息`);
}
const instance = axios.create(config);
// 请求拦截器
instance.interceptors.request.use(
config => {
// 可以在这里添加请求头、认证信息等
return config;
},
error => {
// 请求错误处理
return Promise.reject(error);
}
);
// 响应拦截器
instance.interceptors.response.use(
response => {
// 对响应数据做处理,例如只返回data部分
return response.data;
},
error => {
// 响应错误处理
ElMessageBox.alert('请求发生错误: ' + error.message, '错误', { type: 'error' });
return Promise.reject(error);
}
);
return instance;
}
// 使用函数创建实例
const clientAInstance = createAxiosInstance('clientA');
// 使用实例发送请求
clientAInstance.get('/some-endpoint')
.then(response => {
console.log('响应数据:', response);
})
.catch(error => {
console.error('请求失败:', error);
});
这个代码示例展示了如何根据客户端ID动态创建带有特定配置的axios实例,并在请求和响应拦截器中添加了错误处理逻辑。通过这种方式,开发者可以根据不同的客户端配置发送请求,并确保请求和响应处理的一致性。
评论已关闭