axios请求多个服务器

2 篇文章 0 订阅

在此之前, 请求的服务器需要后端设置可跨域

此文章中主要有三种方案:

const apis = {
	api1: 'http://aaa.com/',
	api2: 'http://bbb.com/'
}

(1) 把baseURL置空不设置, 定义一个新的axios

const service = axios.create({
  timeout: 300000, // 5分钟
})

把完整的url链接放入到请求中

export const get1 = (url: string, params = {}, token = true) => {
  let u = apis.api1 + url
  return service.get(u, { params }).then((res) => res.data)
};
export const get2 = (url: string, params = {}, token = true) => {
  let u = apis.api2 + url
  return service.get(u, { params }).then((res) => res.data)
};

(2)将接口自定义加头部, 如项目一的接口为/program1/api, 项目二的接口为/program2/api, 在request请求头上进行替换

service.interceptors.request.use((config) => {
  if (config.url.indexOf("/program1") >= 0) {
    config.headers = {};
    if (config.url.indexOf("/program1") >= 0) {
    	config.url = config.url.replace("/program1", apis.api1);
    }
  }
  return config;
});

又或者在请求接口方法上进行替换


export const get = (url: string, params = {}, token = true) => {
  let u = ''
  if(url.indexOf('/program1')) u.replace("/program1", apis.api1);
  return service.get(u, { params }).then((res) => res.data);
};

(3)和后端约定, 不同项目的接口, 请求的接口头部不同. 因为一般的都为’/api’, 可约定’/program1/api’、‘/program2/api’, 此时就可以不用区分请求接口方法(主要区分在代理使用)

代理代码:

proxy: {
  '/program1': {
    target: apis.api1,
    changeOrigin: true,//设置访问目标地址允许跨域
    rewrite: (p) =>{ return p.replace(/^\/program1/, '')}
  },
  '/program2': {
    target: apis.api2,
    changeOrigin: true,//设置访问目标地址允许跨域
    rewrite: (p) =>{ return p.replace(/^\/program2/, '')}
  },
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值