新增一个request1.js页面通过我提供的封装公共的request代码,简单的实现同一个页面请求两个不同ip地址的服务器
时间: 2024-11-09 10:28:53 浏览: 21
为了在 `request1.js` 页面中使用你提供的封装公共的 request 代码,并且简单地实现在同一个页面请求两个不同 IP 地址的服务器,你可以按照以下步骤操作:
### 1. 封装公共的 request 函数
首先,在 `request1.js` 中引入你提供的 `service` 对象,并创建两个不同的 Axios 实例,分别用于请求不同的服务器。
```javascript
import Vue from 'vue';
import axios from 'axios';
import { VueAxios } from './axios';
import { ACCESS_TOKEN, TENANT_ID } from "@/store/mutation-types";
import { Modal, notification } from 'ant-design-vue';
// 定义两个不同的 API 基础 URL
const apiBaseUrl1 = 'http://ip-address1/api';
const apiBaseUrl2 = 'http://ip-address2/api';
// 创建两个不同的 Axios 实例
const service1 = axios.create({
baseURL: apiBaseUrl1,
timeout: 1800000 // 请求超时时间
});
const service2 = axios.create({
baseURL: apiBaseUrl2,
timeout: 1800000 // 请求超时时间
});
// 公共的请求拦截器
const addRequestInterceptors = (service) => {
service.interceptors.request.use(config => {
const token = Vue.ls.get(ACCESS_TOKEN);
if (token) {
config.headers['X-Access-Token'] = token;
}
const tenantid = Vue.ls.get(TENANT_ID) || 0;
config.headers['tenant_id'] = tenantid;
config.headers['terminal_id'] = 1;
if (window.sessionStorage.getItem('sysSubCompany')) {
config.headers['sys-sub-company'] = window.sessionStorage.getItem('sysSubCompany');
}
if (config.method === 'get' && !config.url.includes("sys/dict/getDictItems")) {
config.params = { _t: Date.parse(new Date()) / 1000, ...config.params };
}
return config;
}, (error) => {
return Promise.reject(error);
});
};
// 公共的响应拦截器
const addResponseInterceptors = (service) => {
service.interceptors.response.use((response) => {
if (response.headers['res-interceptor'] === 'false') {
return response;
} else {
const data = response.data;
if (!(data.code === 0 || data.code === 200 || data.code === undefined)) {
notification.error({
message: '系统提示',
description: data.message,
duration: 4
});
}
if (response.config.url.includes('/web/bizWorkorder/getWorkorderProject')) {
if (data.result && data.result.values) {
data.result.values.forEach(item => {
item.projectCode = item.code;
item.projectName = item.name;
});
}
}
return data;
}
}, err);
};
// 添加拦截器
addRequestInterceptors(service1);
addResponseInterceptors(service1);
addRequestInterceptors(service2);
addResponseInterceptors(service2);
// 导出两个服务实例
export { service1, service2 };
```
### 2. 在页面中使用这两个服务实例
接下来,在你需要的页面中导入并使用这两个服务实例来发起请求。
```javascript
<template>
<div>
<button @click="fetchDataFromServer1">从服务器1获取数据</button>
<button @click="fetchDataFromServer2">从服务器2获取数据</button>
</div>
</template>
<script>
import { service1, service2 } from './request1.js';
export default {
methods: {
async fetchDataFromServer1() {
try {
const response = await service1.get('/your-endpoint1');
console.log('从服务器1获取的数据:', response.data);
} catch (error) {
console.error('从服务器1获取数据失败:', error);
}
},
async fetchDataFromServer2() {
try {
const response = await service2.get('/your-endpoint2');
console.log('从服务器2获取的数据:', response.data);
} catch (error) {
console.error('从服务器2获取数据失败:', error);
}
}
}
};
</script>
```
### 总结
1. **创建两个不同的 Axios 实例**:分别为两个不同的服务器创建 Axios 实例。
2. **添加公共的请求和响应拦截器**:确保每个实例都具有相同的拦截器逻辑。
3. **在页面中使用这些实例**:在页面中导入并使用这些实例来发起请求。
这样,你就可以在一个页面中轻松地向两个不同的服务器发送请求了。
阅读全文