多代理就要建立多个axios实例对象

vueconfig

devServer: {
open: true,
host: "localhost",
// host: "10.3.96.228", port: "8020",
proxy: {
"/api1": {
target: "https://testapps.eshiyun.info", // 测试环境 城市漫游
ws: false,
changeOrigin: true,
pathRewrite: {
"^/api1": "",
},
},
"/api": {
target: "https://cdpre.tfsmy.com", // 测试环境代理2本地资讯
ws: false,
changeOrigin: true,
pathRewrite: {
"^/api": "",
},
},
},
},

每个接口文件写自己代理接口。之后全部导入index文件

// 城市漫游接口文件
import axios from "axios";
import Qs from "qs";
import { Toast } from "vant"; // 按需引入 let origin = window.location.origin; // 多环境打包--从url中获取【协议域名端口】
let baseUrl = ""; if (window.location.hostname === "localhost") {
baseUrl = "/api1"; // 【本地开发】 用
} else {
baseUrl = origin; // 打包【测试/生产】 用
} const instance = axios.create({
baseURL: baseUrl,
timeout: 10 * 1000, // 10s timeout
}); instance.defaults.headers.post["Content-Type"] =
"application/x-www-form-urlencoded"; // 请求拦截
instance.interceptors.request.use(
(config) => {
config.headers["cityCode"] = "460100";
config.headers["platform"] = "1";
config.headers["eshimin-version"] = "1.1.0.03";
config.headers["ramble"] = "1"; return config;
},
// 对请求错误做些什么
(error) => {
return Promise.reject(error);
}
); // 响应拦截
instance.interceptors.response.use(
// 2xx 范围内的任何状态代码都会触发此函数
(response) => {
if (response.status === 200) {
// 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据
// 处理响应数据
return Promise.resolve(response);
} else {
return Promise.reject(response);
}
},
// 任何 非2xx 范围的状态代码都会触发此功能
(error) => {
// 关闭loading
Toast.clear();
// 异常响应的处理开始
// 具体要处理多少种状态码,需和后端沟通一致,这里仅作示例
if (error && error.response) {
// 根据响应码处理
switch (
error.response.status // 注意:error.response.status的类型是number
) {
case 400:
Toast("这是个错误请求");
break;
// 注意这里需要后端配合,将响应的重定向状态码302重置为401,
// 因为3xx的状态码前端捕获不到
case 401:
Toast("需要用户进行身份认证");
// 这里捕获到重定向响应,就跳转到登录页
// window.top.location.href = baseUrl + '/boss/a';
break;
case 404:
Toast("请求的资源不存在");
break;
case 500:
Toast("服务端出错");
break;
default:
Toast(`连接出错${error.response.status}`);
}
} else {
if (error.message.indexOf("timeout") !== -1) {
// 超时处理
Toast("请求超时,请重试~");
} else {
Toast("未知错误:" + error);
}
}
// 抛出请求的错误信息
return Promise.reject(error);
}
); function get(url, params) {
return new Promise((resolve, reject) => {
instance
.get(url, {
params: params,
})
.then((res) => {
resolve(res.data);
})
.catch((err) => {
reject(err.data);
});
});
} /**
* 封装post方法
* url--请求的url地址
* params--请求时携带的参数
*/
function post(url, params = {}) {
return new Promise((resolve, reject) => {
instance
.post(url, Qs.stringify(params))
.then((res) => {
resolve(res.data);
})
.catch((err) => {
reject(err.data);
});
});
} /***
* 公共接口 示例
*
* */ //cityId params里面有个参数 获取天气接口
export function getWeather(params = {}) {
return get("/weather/forecast", params);
} //
export function getRraKey(params = {}) {
return post("/service-converge-consumer/rsaKey", params);
} export function serviceList(params) {
return post("/service-converge-consumer/service/list", params);
}
// //获取首页新闻聚合接口
// export function aggregate(params = {}) {
// return get("/aggregate/api/home/cms", params);
// }

index

import { getWeather, getRraKey, serviceList } from "./api";
import { aggregate } from "./api1"; export default {
getWeather,
getRraKey,
serviceList,
aggregate,
};

vue 多代理的更多相关文章

  1. vue中代理实现方法

    vue中代理实现方法如下: const path = require('path'); function resolve(dir) { return path.join(__dirname, dir) ...

  2. axios踩坑记录+拦截器使用+vue cli代理跨域proxy+webpack打包部署到服务器

    1.小小的提一下vue cli脚手架前端调后端数据接口时候的本地代理跨域问题,如我在本地localhost访问接口http://40.00.100.100:3002/是要跨域的,相当于浏览器设置了一道 ...

  3. vue反向代理(解决跨域)

    1,vue中有提供反向代理的接口,就是config/index.js中的proxyTable,我的脚手架版本是2.9.6,proxyTable配置初始为空,如下图. 2,将proxyTable配置如下 ...

  4. Vue 本地代理 纯前端技术解决跨域

    vue-axios获取数据很多小伙伴都会使用,但如果前后端分离且后台没设置跨域许可,那要怎样才能解决跨域问题? 常用方法有几种: 通过jsonp跨域 通过修改document.domain来跨子域 使 ...

  5. Vue 配置代理

    说明:这里的vue代理是指用vue静态服务器做代理.使用的是 http-proxy-middleware 这个模块(这个模块相当于是node.js的一个插件). 版本: vue-cli 3.0以上 修 ...

  6. vue使用代理实现开发阶段跨域

    在config/index.js找到 proxyTable对象,添加键值对即可. "/api":{ target:"http://192.168.1.1", c ...

  7. vue 设置代理后 后端获取不到登录的session处理方法

    代理设置的 名称 必须是 远程后端的 项目名称 session才生效.

  8. vue 服务代理 调用第三方api

    项目中前期需要调用第三方API来获取汇率.因为直接调用会有跨域的问题,所以使用来服务代理. 在config配置代理可以这样写: 而调用接口就可以这样写: 坑:配置完成后一直报500,开始怀疑人生.最后 ...

  9. vue反向代理解决跨域

    问题描述 在项目开发的时候,接口联调的时候一般都是同域名下,且不存在跨域的情况下进行接口联调,但是当我们现在使用vue-cli进行项目打包的时候,我们在本地启动服务器后,比如本地开发服务下是 http ...

  10. vue proxyTable代理 解决开发环境的跨域问题

    如果我们项目请求的地址为 htttp://xxxx.com/a/b/c 可以设置代理为: dev:{ assetsSubDirectory: 'static',// 静态资源文件夹 assetsPub ...

随机推荐

  1. Python自动化爬取App数据

    基本环境配置 版本:Python3 系统:Windows 需要安装: 1.JDK - Download JDK,Appium要求用户必须配置JAVA环境, 否则启动Seesion报错. 很多人学习py ...

  2. linxu系统安装WordPress

    确保在安装wordpress之前,安装了nginx,php,mysql 没有安装的翻我之前的博文有安装方法 进入官网下载压缩包 wget https://wordpress.org/latest.ta ...

  3. C#LeetCode刷题之#345-反转字符串中的元音字母​​​​​​​(Reverse Vowels of a String)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3935 访问. 编写一个函数,以字符串作为输入,反转该字符串中的元 ...

  4. Vulnhub篇Photographerr

    0x00 靶机信息 靶机:Photographerr:1 难度:中 下载:https://www.vulnhub.com/entry/photographer-1,519/ 0x01 信息收集 靶场网 ...

  5. 炼技术(9): 简约而不简单,永不停歇的测试 -- always_run

    最强战力,永不停歇的测试:always_run 许多工程师写完程序后,都不愿意对自己的程序做仔细测试. 很多测试说会做自动化测试,可能工作好几年都没真做过多少自动化测试. 我们的解决方案是,在系统的测 ...

  6. 【SP2916】Can you answer these queries V - 线段树

    题面 You are given a sequence \(a_1,a_2,...,a_n\). (\(|A[i]| \leq 10000 , 1 \leq N \leq 10000\)). A qu ...

  7. 【算法•日更•第五十四期】知识扫盲:什么是operator?

    ▎前言 这个东西和迭代器长的很像,但是比迭代器常见的多. 今天就来浅谈operator. ▎定义 operator是C#.C++和pascal的关键字,它和运算符一起使用,表示一个运算符函数,理解时应 ...

  8. put数据到topic

    基于python3.6 # -*-coding:utf-8 *- __author__ = 'lc_yy' from pykafka import KafkaClient import logging ...

  9. Android studio 在项目里配置签名 + cmd命令安装apk在测试机

    一.在项目里配置签名 搜索百度里有很多可视化操作在项目里配置签名,但是对于已经有签名的旧项目来说,用语句是最方便的. 方法: 第一步:把签名文件放到项目中,和build.gradle的同一级目录下.当 ...

  10. rabbitmq python demo 参考链接地址

    链接地址: https://docs.openstack.org/oslo.messaging/latest/reference/server.html https://www.cnblogs.com ...