多代理就要建立多个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. GhostNet:more features from cheap operation

  2. 2020重新出发,JAVA语言,什么是JAVA?

    @ 目录 什么是 java? JAVA三大体系 Java SE Java EE JavaME java的主要特性和优势 1. 面向对象 2. 平台无关性 3. 可移植性 4. 简单性 5. 解释执行 ...

  3. Go 语言中,有时 nil 并不是一个 nil

    今天,我遇到了一个 Go FAQ.首先,作为一个小小的 Go 语言测验,看看您是否在 Go playground 中运行该程序之前就能推断出它应该打印出的内容(我已经将程序放在侧边栏中,以防它在 Go ...

  4. 2020-04-07:说出Servlet的生命周期,并说出Servlet和CGI的区别。

    Servlet的生命周期分为5个阶段:实例化:Servlet容器创建Servlet类的实例.初始化:该容器调用init()方法,通常会申请资源.服务:由容器调用service()方法,(也就是doGe ...

  5. 解决AndroidStudio 模拟器无网络连接

    更新 注意 Win10 要在cmd下打开, 也就是地址栏打cmd能成功 转载地址 https://blog.csdn.net/Bibifeng/article/details/81317037 最近写 ...

  6. Spring Boot自定义错误视图

    Spring Boot缺省错误视图解析器 Web应用在处理请求的过程中发生错误是非常常见的情况,SpringBoot中为我们实现了一个错误视图解析器(DefaultErrorViewResolver) ...

  7. flask_restful实现文件下载功能

    环境:前后端完全分离,后端flask_restful,前端vue from flask_restful import reqparse, Resource from flask import send ...

  8. Vue CLI3 移动端适配 【px2rem 或 postcss-plugin-px2rem】

    Vue CLI3 移动端适配 [px2rem 或 postcss-plugin-px2rem] 今天,我们使用Vue CLI3 做一个移动端适配 . 前言 首先确定你的项目是Vue CLI3版本以上的 ...

  9. 【算法•日更•第五十七期】快速傅里叶变换(FFT):从入门到放弃

    ▎一些用的上的东西 小编太菜了,很多东西都不会证明(主要是三角函数还没有学啊~~~). 附上链接https://blog.csdn.net/enjoy_pascal/article/details/8 ...

  10. windows下Nacos集群搭建与nginx集成

    前言: nacos集群至少需要三个(一般为奇数个)nacos实 例,其前面顶nginx,外界入口从nginx入 一.windows下Nacos集群搭建 将Nacos的解压包复制分成3份,分别是: na ...