vue 多代理
多代理就要建立多个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 多代理的更多相关文章
- vue中代理实现方法
vue中代理实现方法如下: const path = require('path'); function resolve(dir) { return path.join(__dirname, dir) ...
- axios踩坑记录+拦截器使用+vue cli代理跨域proxy+webpack打包部署到服务器
1.小小的提一下vue cli脚手架前端调后端数据接口时候的本地代理跨域问题,如我在本地localhost访问接口http://40.00.100.100:3002/是要跨域的,相当于浏览器设置了一道 ...
- vue反向代理(解决跨域)
1,vue中有提供反向代理的接口,就是config/index.js中的proxyTable,我的脚手架版本是2.9.6,proxyTable配置初始为空,如下图. 2,将proxyTable配置如下 ...
- Vue 本地代理 纯前端技术解决跨域
vue-axios获取数据很多小伙伴都会使用,但如果前后端分离且后台没设置跨域许可,那要怎样才能解决跨域问题? 常用方法有几种: 通过jsonp跨域 通过修改document.domain来跨子域 使 ...
- Vue 配置代理
说明:这里的vue代理是指用vue静态服务器做代理.使用的是 http-proxy-middleware 这个模块(这个模块相当于是node.js的一个插件). 版本: vue-cli 3.0以上 修 ...
- vue使用代理实现开发阶段跨域
在config/index.js找到 proxyTable对象,添加键值对即可. "/api":{ target:"http://192.168.1.1", c ...
- vue 设置代理后 后端获取不到登录的session处理方法
代理设置的 名称 必须是 远程后端的 项目名称 session才生效.
- vue 服务代理 调用第三方api
项目中前期需要调用第三方API来获取汇率.因为直接调用会有跨域的问题,所以使用来服务代理. 在config配置代理可以这样写: 而调用接口就可以这样写: 坑:配置完成后一直报500,开始怀疑人生.最后 ...
- vue反向代理解决跨域
问题描述 在项目开发的时候,接口联调的时候一般都是同域名下,且不存在跨域的情况下进行接口联调,但是当我们现在使用vue-cli进行项目打包的时候,我们在本地启动服务器后,比如本地开发服务下是 http ...
- vue proxyTable代理 解决开发环境的跨域问题
如果我们项目请求的地址为 htttp://xxxx.com/a/b/c 可以设置代理为: dev:{ assetsSubDirectory: 'static',// 静态资源文件夹 assetsPub ...
随机推荐
- linux学习笔记之makefile
首先 make时工程管理器 而makefile则是make唯一的配置文件,当我们需要使用make管理工程时,我们需要建立一个makefile文件 简单点说,makefile是把我们所要编译的c文件结合 ...
- k8s使用需认证的私服仓库
本文内容 在K8s中使用需认证的私服仓库需要导入认证信息到集群中,常规导入方式有两种: 使用Docker已登录的仓库密文导入 使用命令行创建Secret对象导入 本文介绍的就是以上两种方法. 使用Do ...
- 史上最全且最简洁易懂的Activity启动流程解析
Activity的启动流程是一个资深Android工程师必须掌握的内容,也是高职级面试中的高频面试知识点,无论是从事应用层开发,还是Framework开发,其重要性都无需我多言.而要真正理解它,就不可 ...
- ms14-064漏洞复现
本博客最先发布于我的个人博客,如果方便,烦请移步恰醋的小屋查看,谢谢您! 这是我在实验室学习渗透测试的第五个漏洞复现,一个多小时便完成了.学长给的要求只需完成查看靶机信息.在指定位置创建文件夹两项操作 ...
- Web安全攻防(简)学习笔记
Web安全攻防-学习笔记 本文属于一种总结性的学习笔记,内容许多都早先发布独立的文章,可以通过分类标签进行查看 信息收集 信息收集是渗透测试全过程的第一步,针对渗透目标进行最大程度的信息收集,遵随&q ...
- mongodb在win10下的安装和配置
一.准备 下载mongodb https://www.mongodb.com/download-center/community 该实例中使用的是:mongodb-win32-x86_64-2008p ...
- eclipse项目文件夹整理
1.点击倒三角 2.系统默认为Projects,选择第二个working sets 3.点击Configure Working Sets,点new 4.点击后,选中点Add 5.添加一个名字,Fins ...
- Jmeter 常用函数(13)- 详解 __machineIP
如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 返回机器(电脑)IP 语法格式 ${_ ...
- Hive学习目录
大数据之Hive学习目录 第 1 章 Hive入门 1.1 什么是Hive 1.2 Hive的优缺点 1.2.1 优点 1.2.2 缺点 1.3 *Hive架构原理 1.4 Hive和数据库比较 第 ...
- SparkSQL DSL 随便写写
@Testdef functionTest() = { Logger.getLogger("org").setLevel(Level.WARN) val spark = getSp ...