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 ...
随机推荐
- 一张图理清 Python3 所有知识点
如果你前几天一直有关注 GitHub Trending,那你应该会留意到「Python3 in one pic」这个开源项目. 很多人学习python,不知道从何学起.很多人学习python,掌握了基 ...
- 从零搭建Spring Boot脚手架(2):增加通用的功能
1. 前言 今天开始搭建我们的kono Spring Boot脚手架,首先会集成Spring MVC并进行定制化以满足日常开发的需要,我们先做一些刚性的需求定制,后续再补充细节.如果你看了本文有什么问 ...
- 【lhyaaa】最近公共祖先LCA——倍增!!!
高级的算法——倍增!!! 根据LCA的定义,我们可以知道假如有两个节点x和y,则LCA(x,y)是 x 到根的路 径与 y 到根的路径的交汇点,同时也是 x 和 y 之间所有路径中深度最小的节 点,所 ...
- Tutte 定理与 Tutte–Berge 公式
Tutte theorem 图 \(G=(V,E)\) 有完美匹配当且仅当满足 \(\forall U\subseteq V,o(G-U)\le|U|,o(X)\) 表示 X 子图的奇连通块数. Tu ...
- java web应用启动报错:Caused by: java.lang.ClassNotFoundException: ServletContext
ServletContext是个接口,不同的WEB容器(tomcat, jboss等)都有各自的实现. 一般是缺少servlet-api.jar包 在Java Build Path的Libraries ...
- Git本地库既关联GitHub又关联Gitee
创建代码仓库 使用gitee举例(github和gitee差不多) 1.在gitee右上角点击+,选择新建仓库
- golang 字符型
目录 前言 1. 基本 介绍 2. 声明 3. 使用细节 4. 字符类型的本质 跳转 前言 不做文字的搬运工,多做灵感性记录 这是平时学习总结的地方,用做知识库 平时看到其他文章的相关知识,也会增加到 ...
- Excel 提取年月日①
问题场景 从任务数据表中比较所有任务的预计完成时间和实际完成时间,来判断该任务是逾期还是按期完成了,根据实际场景是不需要考虑时分秒,只需对比该任务预计完成和实际完成的年月日. 可通过提取年月日用函数进 ...
- Mapreduce学习(一)
MapReduce 介绍 简单介绍: MapReduce思想在生活中处处可见.或多或少都曾接触过这种思想.MapReduce的思想核心是“分而治之”,适用于大量复杂的任务处理场景(大规模数据处理场景) ...
- python - 基础局部变量和全局变量
python中全局变量和局部变量的最大区别在于局部变量只能通过函数去访问,而全局变量可以直接访问 首先我们来看下什么是全局变量和局部变量 全局变量:在函数之外定义的变量,所有函数内可以调用这个全局变量 ...