axios连接多个不同的后端接口

一、配置多个地址

在生产环境和开发环境都配置两个地址。可以使用。env.development和.env.production文件中设置基础路径。使用简易框架搭建的话,有下面这段代码就两种环境都有了。

`domainName:
 process.env.NODE_ENV == "production" ? 
  { baseurl1: "http://****:9002", baseurl2: "http://****:8001" }        
  : { baseurl1: "http://****:9001", baseurl2: "http://****:8000" }

二 、axios拦截器的配置

创建两个文件声明两个不同的拦截器
在这里插入图片描述

request.js文件的内容入下:

import axios from "axios";
import tools from "@/scripts/tools";
import appConsts from '@/scripts/app-consts';
import router from '@/router'

//axios 基本配置
let isLoading = true;
const service = axios.create({
    baseURL: appConsts.domainName.baseurl1,
    timeout: 1000 * 1000,
})

//http request 拦截器
service.interceptors.request.use(
    (config) => {
        if (isLoading) {
            tools.loadingStart();
        }
        let authorization = tools.getAuthorization();
        if (authorization) {          config.headers[appConsts.authorizationKeyName] = authorization;
        }
        config.headers["X-Requested-With"] = "XMLHttpRequest";
        config.headers["Content-Type"] = "application/json; charset=UTF-8";
        if (!config.data) return config;
        if (config.data.isUpload) config.headers["Content-Type"] = "multipart/form-data";
        return config;
    },
    (error) => {
        console.log(error);
        return Promise.reject(error);
    }
);

/**
 * 封装get方法
 * @param url
 * @param data
 * @param loading 是否有加载效果
 * @param headers 头部信息
 * @returns {Promise}
 */
export function get(url, data = {}, loading = true, config = {}) {
    isLoading = loading;
    config["params"] = data;
    return new Promise((resolve, reject) => {
        service
            .get(url, config)
            .then((response) => {
                if (response) resolve(response.data);
            })
            .catch((err) => {
                reject(err);
            });
    });
}

/**
 * 封装post请求
 * @param url
 * @param data
 * @param loading 是否有加载效果
 * @param config config信息
 * @returns {Promise}
 */
export function post(url, data = {}, loading = true, config = {}) {
    isLoading = loading;
    return new Promise((resolve, reject) => {
        service.post(url, data, config).then(
            (response) => {
                if (response) resolve(response.data);
            },
            (err) => {
                reject(err);
            }
        );
    });
}
}

request_new.js内容基本同上

const service_new = axios.create({
    baseURL: appConsts.domainName.baseurl2,
    timeout: 1000 * 1000,
})

之前也有直接复制一份request.js文件,修改url,但是访问出现了问题。具体的问题就是因为没有使用axios.create
只有一个url的时候采用直接赋值的方法。

axios.defaults.timeout = 100 * 1000;
axios.defaults.baseURL = appConsts.domainName ;

参考链接

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 可以使用Vue.js框架将前端应用程序与两个后端服务器进行连接。 要将Vue.js与后端服务器连接,需要使用HTTP请求。您可以使用Vue.js中的内置HTTP客户端Axios来执行HTTP请求。Axios支持异步请求和Promise API,使您可以轻松地与后端服务器通信。 以下是一些示例代码,演示如何使用Axios在Vue.js中执行HTTP请求: ``` // 在Vue.js组件中使用Axios发送GET请求 import axios from 'axios' export default { data() { return { users: [] } }, created() { axios.get('https://example.com/api/users') .then(response => { this.users = response.data }) } } ``` ``` // 在Vue.js组件中使用Axios发送POST请求 import axios from 'axios' export default { data() { return { username: '', password: '' } }, methods: { login() { axios.post('https://example.com/api/login', { username: this.username, password: this.password }) .then(response => { // 处理登录成功的响应 }) .catch(error => { // 处理登录失败的响应 }) } } } ``` 在上述示例代码中,第一个示例向https://example.com/api/users发送GET请求,并将响应数据存储在组件的“users”数据属性中。第二个示例向https://example.com/api/login发送POST请求,并根据响应数据处理登录结果。 请注意,这些示例仅用于演示如何使用Axios在Vue.js中执行HTTP请求。在实际应用程序中,您需要根据您的特定需求和后端服务器的要求进行调整和修改。 ### 回答2: Vue.js 是一个用于构建用户界面的渐进式JavaScript框架。它允许我们创建灵活的前端应用程序,并能够与后端服务器进行通信。 要同时连接两个后端服务器,我们可以使用Vue的Axios库来发送HTTP请求。Axios是一个流行的HTTP客户端,它能够与多个后端服务器进行通信。 下面是一个示例代码来同时连接两个后端服务器: ```javascript import axios from 'axios'; // 定义两个后端服务器的基本URL const server1 = 'http://server1.com/api/'; const server2 = 'http://server2.com/api/'; // 发送请求到第一个服务器 axios.get(server1 + 'data') .then((response) => { console.log(response.data); }) .catch((error) => { console.error(error); }); // 发送请求到第二个服务器 axios.get(server2 + 'data') .then((response) => { console.log(response.data); }) .catch((error) => { console.error(error); }); ``` 在上述示例中,我们首先导入Axios库,并定义了两个后端服务器的基本URL。然后,我们使用Axios的`get`方法发送HTTP GET请求到每个后端服务器,并在`then`函数中处理响应数据,或在`catch`函数中处理错误。 通过以上方式,我们可以同时连接两个后端服务器,并在Vue应用程序中使用它们的数据。这使得我们能够从多个数据源获取数据,并在前端界面中展示它们。 ### 回答3: Vue可以同时连接多个后端服务器,实现前后端分离开发。具体步骤如下: 1. 在Vue项目中,使用Axios或者Fetch等库来发送HTTP请求。这些库可以轻松地发送请求到后端服务器并处理返回的数据。 2. 在Vue的配置文件(如vue.config.js)中,可以设置代理来与后端服务器进行连接。通过设置不同的路径映射,可以将不同的请求转发到不同后端服务器上。 3. 在Vue项目中,可以提前定义好不同的API请求,分别对应不同后端服务器。比如,在api文件夹中创建不同的文件,每个文件对应不同后端接口,并分别设置不同的URL路径和请求方法。 4. 在Vue组件中,通过调用不同的API请求来连接不同后端服务器。通过调用对应的接口函数,并传递相应的参数和请求数据,可以向不同后端服务器发送请求并获取返回的数据。 5. 在Vue组件中,可以通过Vue实例的data选项来保存不同后端服务器返回的数据。通过对data进行适当的赋值,可以在前端页面中展示不同后端服务器返回的数据。 总结来说,Vue可以通过使用Axios或者Fetch等库来连接不同后端服务器,并发送HTTP请求。通过定义不同的API请求和设置代理,可以在Vue项目中同时连接多个后端服务器,实现前后端分离开发
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值