文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

vue怎么配置多个代理

2023-07-04 12:37

关注

这篇文章主要介绍“vue怎么配置多个代理”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue怎么配置多个代理”文章能帮助大家解决问题。

在Vue项目的开发过程中,为了本地调试方便,我们通常会在 vue.config.js 中配置 devServer 来在本地启动一个服务器,在这个选项中,我们会配置proxy 属性来将指向到本地的请求(例如: /api/action) 代理到后端的开发服务器上(例如: http://xxx.xxx.xxx/api/action)

devServer: {        port: 8081,        proxy: {            '/api/action': {                target: 'http://192.168.200.106:81',                changeOrigin: true,                ws: true,                secure: false            }        }    },```

在这个配置中,要注意以下两点:

接口地址有重叠地址时,将匹配度低的放在后面。

例如:

  1. * 将 / 匹配到 192.191.1.1;

  2. * 将 /api 匹配到 192.191.1.2

  3. * 将 /api/action 匹配到 192.191.1.3

如果我们像下面一样书写:

proxy: {            '/': {                target: 'http://192.191.1.1',                changeOrigin: true,                ws: true,                secure: false            },    '/api': {                target: 'http://192.191.1.2',                changeOrigin: true,                ws: true,                secure: false            },    '/api/action': {                target: 'http://192.191.1.3',                changeOrigin: true,                ws: true,                secure: false            }        }

那么所有到/, /api和 /api/action 的请求将全部被代理到 192.191.1.1 上面去

原因是这里的匹配实际上是一个正则匹配的过程,当我们请求 /api 时,首先读取到了配置项中的第一个,拿配置中的 / 去匹配请求中的 /api , 发现请求的/api 中包含配置项/, 匹配成功,直接将请求代理到了 192.191.1.1 上面去, 对/api/action的匹配也同理。

也就是说,它的匹配规则是: 拿配置项中的地址去匹配请求中的地址,如果请求中的地址中包含配置中的地址,则匹配成功,否则,拿下一个配置项继续匹配。

所以,配置中的地址与请求地址中匹配的字符越少,匹配度越低。 上例中配置中的地址(/)与请求地址(/api)只有一个字符是匹配的,所以匹配度低。

所以我们正确的写法应该是:

proxy: {            '/api/action': {                target: 'http://192.191.1.3',                changeOrigin: true,                ws: true,                secure: false            },    '/api': {                target: 'http://192.191.1.2',                changeOrigin: true,                ws: true,                secure: false            },    '/': {                target: 'http://192.191.1.1',                changeOrigin: true,                ws: true,                secure: false            }        }

这样到三个地址的请求就都可以正确代理到相应的地址去了

多个地址代理同一个target 时,可进行合并

在实际应用中,由于后端采用微服务模式开发,在开发阶段,我们可能会将不同的服务代理到不同的地址上,当服务很多时,我们代理的数量也就很多:

proxy: {  '/api/action': {                target: 'http://192.191.1.3',                changeOrigin: true,                ws: true,                secure: false            },              '/api/action2': {                target: 'http://192.191.1.4',                changeOrigin: true,                ws: true,                secure: false            },              '/api/action3': {                target: 'http://192.191.1.3',                changeOrigin: true,                ws: true,                secure: false            },              '/api/action4': {                target: 'http://192.191.1.4',                changeOrigin: true,                ws: true,                secure: false            },              '/api/action5': {                target: 'http://192.191.1.5',                changeOrigin: true,                ws: true,                secure: false            },              '/api/action6': {                target: 'http://192.191.1.6',                changeOrigin: true,                ws: true,                secure: false            },              '/api/action7': {                target: 'http://192.191.1.5',                changeOrigin: true,                ws: true,                secure: false            },              '/api/action8': {                target: 'http://192.191.1.6',                changeOrigin: true,                ws: true,                secure: false            },              '/api/action9': {                target: 'http://192.191.1.7',                changeOrigin: true,                ws: true,                secure: false            }, '/api': {                target: 'http://192.191.1.2',                changeOrigin: true,                ws: true,                secure: false            }, '/': {                target: 'http://192.191.1.1',                changeOrigin: true,                ws: true,                secure: false            },                      }

当配置的代理数量超过十个时,开发环境编译打包时会报以下错误:

vue怎么配置多个代理

为了解决报错,也同时减少代码体积,我们可以对具有同一个target的配置项进行合并,由上文我们可知,这里其实是一个正则匹配的过程,那我们就可以利用正则语法将他们进行合并:

proxy: {  '/api/action|/api/action3': {                target: 'http://192.191.1.3',                changeOrigin: true,                ws: true,                secure: false            },              '/api/action2|/api/action4'': {                target: 'http://192.191.1.4',                changeOrigin: true,                ws: true,                secure: false            },                           '/api/action5|/api/action7': {                target: 'http://192.191.1.5',                changeOrigin: true,                ws: true,                secure: false            },              '/api/action6|/api/action8': {                target: 'http://192.191.1.6',                changeOrigin: true,                ws: true,                secure: false            },              '/api/action9': {                target: 'http://192.191.1.7',                changeOrigin: true,                ws: true,                secure: false            }, '/api': {                target: 'http://192.191.1.2',                changeOrigin: true,                ws: true,                secure: false            }, '/': {                target: 'http://192.191.1.1',                changeOrigin: true,                ws: true,                secure: false            },                      }

当然,在正式部署的时候,还是需要后端去做统一代理。

vue是什么

Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区别是,使用Vue可以自底向上逐层应用,其核心库只关注视图层,方便与第三方库和项目整合,且使用Vue可以采用单文件组件和Vue生态系统支持的库开发复杂的单页应用。

关于“vue怎么配置多个代理”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯