多代理就要建立多个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. 001_记一次ansible api二次开发遇到的小问题

    在某次关于发布系统的项目中,需要调用ansible来发布任务,其中一段代码是初始化ansible的连接,并传入一个source(目标机器)的值,代码段如下: from .ansible_api imp ...

  2. Python最好IDE:Pycharm使用小技巧总结,让你写代码更为舒适

  3. Linux学习笔记之linux的文件目录结构

    Linux环境下,一切皆文件! linux和windows系统有区别, windows是在各个硬盘上进行分区,分区里面又有好多文件, 而linux是采用树状的目录结构,所有都在根目录  /  下,所有 ...

  4. fetch封装

    import {fetch as fetchPro} from "whatwg-fetch" import qs from "qs" const get=(ur ...

  5. C#LeetCode刷题,走进Google,走近人生

    概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/1015 访问. 本系列博文将会向大家展示我在LeetCode上的刷 ...

  6. C#算法设计排序篇之01-冒泡排序(附带动画演示程序)

    冒泡排序(Bubble Sort) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/672 访问. 它重复地访问要排序的元 ...

  7. rocketMq安装及集群配置

    网上关于rocketMq安装.集群配置的文章有很多,作为一个初学者,跟着网上的各种教程安装遇到了各种坑,可谓是一路坎坷.本文记录下rocketMq安装的完整过程.希望对你有一点帮助 安装rocketM ...

  8. golang的树结构三种遍历方式

    package main import "log" type node struct { Item string Left *node Right *node } type bst ...

  9. MySQL字符集操作

    一.查看编码 show variables like 'character%'; 二.临时设置编码 1.set names xxx set names ${编码}; "set names x ...

  10. day12 异常 模块 单例

    1.异常 处理     在程序执行过程中 ,发生,影响程序的正常运行     在python中 异常就是一个错误    try  ....  except....捕获异常     try  用来检测t ...