开发过程中可能会遇到后端接口分布在多个地址下的情况,
这样调用不同接口时,就需要切换不同的请求地址;
我是这样处理的
核心代码:

// 2.请求拦截器
service.interceptors.request.use((config) => {console.log('config', config);//发请求前做的一些处理,数据转化,配置请求头,设置token,设置loading等,根据需求去添加config.data = JSON.stringify(config.data); //数据转化,也可以使用qs转换config.headers = {'Content-Type': 'application/x-www-form-urlencoded', //配置请求头// 'Content-Type':'multipart/form-data; boundary=ZnGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC'};switch (config.urlType) {case 'api1':config.url = baseURL + config.url;break;case 'api2':config.url = baseURL2 + config.url;break;default:config.url = baseURL + config.url;}//注意使用token的时候需要引入cookie方法或者用本地localStorage等方法,推荐js-cookie// const token = getCookie('名称');//这里取token之前,你肯定需要先拿到token,存一下// if(token){//   config.params = {'token':token} //如果要求携带在参数中//   config.headers.token= token; //如果要求携带在请求头中// }return config;},(error) => {Promise.reject(error);},
);

在axios实例service中,通过判断传入参数的字段来更改url地址
以get请求为例

完整代码:
axios实例:

/****   request.js   ****/
// 导入axios
import axios from 'axios';
// 使用element-ui Message做消息提醒
import { ElMessage } from 'element-plus';
let baseURL = configUrl.Base_Resource_URL; //index.html引入的
let baseURL2 = configUrl.Base_Resource_URL2;
//1. 创建新的axios实例,
const service = axios.create({// 超时时间 单位是ms,这里设置了3s的超时时间timeout: 3 * 1000,
});
// 2.请求拦截器
service.interceptors.request.use((config) => {console.log('config', config);//发请求前做的一些处理,数据转化,配置请求头,设置token,设置loading等,根据需求去添加config.data = JSON.stringify(config.data); //数据转化,也可以使用qs转换config.headers = {'Content-Type': 'application/x-www-form-urlencoded', //配置请求头// 'Content-Type':'multipart/form-data; boundary=ZnGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC'};switch (config.urlType) {case 'api1':config.url = baseURL + config.url;break;case 'api2':config.url = baseURL2 + config.url;break;default:config.url = baseURL + config.url;}//注意使用token的时候需要引入cookie方法或者用本地localStorage等方法,推荐js-cookie// const token = getCookie('名称');//这里取token之前,你肯定需要先拿到token,存一下// if(token){//   config.params = {'token':token} //如果要求携带在参数中//   config.headers.token= token; //如果要求携带在请求头中// }return config;},(error) => {Promise.reject(error);},
);// 3.响应拦截器
service.interceptors.response.use((response) => {//接收到响应数据并成功后的一些共有的处理,关闭loading等return response;},(error) => {/***** 接收到异常响应的处理开始 *****/if (error && error.response) {// 1.公共错误处理// 2.根据响应码具体处理switch (error.response.status) {case 400:error.message = error.response.data.msg;break;case 401:error.message = '未授权,请重新登录';break;case 403:error.message = '拒绝访问';break;case 404:error.message = '请求错误,未找到该资源';window.location.href = '/';break;case 405:error.message = '请求方法未允许';break;case 408:error.message = '请求超时';break;case 500:error.message = '服务器端出错';break;case 501:error.message = '网络未实现';break;case 502:error.message = '网络错误';break;case 503:error.message = '服务不可用';break;case 504:error.message = '网络超时';break;case 505:error.message = 'http版本不支持该请求';break;default:error.message = `连接错误${error.response.status}`;}} else {// 超时处理if (JSON.stringify(error).includes('timeout')) {ElMessage.error('服务器响应超时,请刷新当前页');}error.message = '连接服务器失败';}ElMessage.error(error.message);/***** 处理结束 *****///如果不需要错误处理,以上的处理过程都可省略return Promise.resolve(error.response);},
);
//4.导入文件
export default service;

分别封装请求方式:

/** @Author: 老范* @Date: 2022-01-12 15:56:04* @LastEditors: 老范* @LastEditTime: 2022-01-19 11:52:42* @Description: 请填写简介*/
/****   http.js   ****/
// 导入封装好的axios实例
import request from './request';const http = {/*** methods: 请求* @param url 请求地址* @param params 请求参数*/get(url, params, type) {const config = {method: 'get',url: url,urlType: type,};if (params) {config.params = params;}return request(config);},post(url, params, type) {const config = {method: 'post',url: url,urlType: type,};if (params) config.data = params;return request(config);},put(url, params, type) {const config = {method: 'put',url: url,urlType: type,};if (params) config.data = params;return request(config);},delete(url, params, type) {const config = {method: 'delete',url: url,urlType: type,};if (params) config.params = params;return request(config);},
};
//导出
export default http;

具体接口例子:

/** @Author: 老范* @Date: 2022-01-12 16:17:22* @LastEditors: 老范* @LastEditTime: 2022-01-19 11:53:39* @Description: 请填写简介*/
import http from '../utils/http';
let model = '/api/model/';// get请求//根据ID获得单个模型信息
export function getModelParams() {return http.get(`/api/getModelList`, {}, 'api2'); //使用第二个地址
}
// post请求
// 获取模型集列表
export function getModelViewListAPI(params) {return http.post(`/api/modelView/search`, params, 'api1');
}

这样在封装接口函数时即可控制其请求地址,并且由于地址是由静态文件引入的,所以打包后的资源中依然有原文件,可通过该文件更改地址

axios配置多个请求地址(打包后可通过配置文件修改)相关推荐

  1. vue项目打包后生成一个配置文件可以修改打包后的服务器api地址

    vue项目打包后生成一个配置文件可以修改打包后的服务器api地址 问题描述:vue项目打包上线之后,如果要改服务器api地址,只能在源码更改然后重新打包发布,为了解决这个问题,我们可以在static增 ...

  2. 实现打包后修改服务器接口地址,vue打包之后生成一个配置文件修改接口

    我们的vue代码打包上传到服务器之后,生成一个配置文件,里面可以配置域名或其它什么字段之类的,这样以后换了域名,只修改这个配置文件即可. 第一步:安装generate-asset-webpack-pl ...

  3. nuxt.js 配置后端的请求地址

    1.在nuxt.config.js中配置 env上下文环境 81是网关所在 module.exports = {env: {baseUrl: process.env.BASE_URL || 'http ...

  4. discuz数据库迁移,改密码后,相关配置文件修改

    网站系统需要修改的位置有两处 Discuz 和 UC-center ①路径:/wwwroot/config/config_global.php 这个根据你网站安装的路径而定. 打开 config_gl ...

  5. no main manifest attribute maven package 运行打包后的jar包报错:xxx.jar中没有主清单属性 通过配置 maven plugin 解决

    文章目录 命令行运行生成的jar包,报错 解决 手动修复 修改打包规则 一劳永逸 MANIFEST.MF demo Others IDEA 中关于 main class 的配置 命令行运行生成的jar ...

  6. 直接打包的服务器组件,Vue-CLI-2.x全家桶架构,支持打包后自动部署到服务器构建案例...

    今天有时间分享一些平时自己开发上的一些构建配置,我们以Vue-CLI-2.x来构建开发环境. 好,我们先来看一下我们要做哪些工作. 现附上源码地址,https://github.com/7492643 ...

  7. # Vue 配置前端后端路由地址

    Vue 配置前端后端路由地址 前端路由配置 配置项目地址 修改 config/index.js的配置文件 proxyTable: {'/api': { //使用"/api"来代替t ...

  8. kali linux查询自己的ip,Kali Linux常用服务配置教程获取IP地址

    Kali Linux常用服务配置教程获取IP地址 下面以Kali Linux为例,演示获取IP地址的方法 (1)设置网络接口为自动获取IP地址.在Kali Linux的收藏夹中单击图标,将显示所有的程 ...

  9. vue中请求接口怎么封装公共地址_如何修改Vue打包后文件的接口地址配置(转自网络)...

    1.背景 常规的vue项目分为本地环境和生产环境,我们只要对 config 文件夹下的 dev.env.js 和 prod.env.js 做相应的配置即可.但是最近在做的项目中,涉及到私有化部署,就是 ...

  10. 如何修改Vue打包后文件的接口地址配置

    1.背景 常规的vue项目分为本地环境和生产环境,我们只要对 config 文件夹下的 dev.env.js 和 prod.env.js 做相应的配置即可.但是最近在做的项目中,涉及到私有化部署,就是 ...

最新文章

  1. 临时“尿检官”谈违规为孙杨检测兴奋剂:一头雾水卷入该事件
  2. c#中位运算符的运用
  3. 聊聊职场那些事儿(转)
  4. php指定长度 分割整形,php指定长度分割字符串str_split函数用法示例
  5. 添加github ssh 公钥
  6. 经营为什么需要哲学(学习总结)
  7. SAP APF框架错误消息Filter is too complex的处理
  8. mysql 索引 内存_mysql索引【第三篇】
  9. angular-数据绑定的最佳实践
  10. PL/SQL Developer14中文版,记住登录密码和常用快捷方式
  11. AtCoder Grand Contest 028题解
  12. 福建省计算机c语言成绩查询时间,计算机C语言等级考试模拟题(福建省).doc
  13. 台式计算机电源机箱维修,台式电脑电源故障维修实例教程
  14. Endnote x7 和X8的下载
  15. 【Qt】x509证书操作之获取证书链并验证
  16. xp系统计算机蓝屏,xp蓝屏代码大全及解决方法
  17. GitHub · 如何创建文件夹
  18. Oozie-4.1.0-cdh5.5.2 安装部署使用
  19. 一些bugku的题目wp
  20. W ndoWs电脑上的线怎么接,win7一台电脑两个显示器的连接方法介绍

热门文章

  1. 多层次细节(Level of detail)
  2. 大天使之剑H5游戏超详细图文架设教程
  3. 微型计算机是以微处理器为基础,在计算机中以微处理器为核心组成的微型计算机属于第几代计算机...
  4. hcia hdcp实验
  5. 面试时如何做自我介绍?聪明的应聘者只聚焦1点
  6. HTML5网页多媒体( 音频,视频,旧版本浏览器提示,格式兼容,多媒体标签属性)
  7. 动态NAT64实验配置
  8. 不确定性,进化与经济理论
  9. 将移动硬盘变为与系统硬盘等同的存在
  10. C++ Primer Plus学习:第十三章