当前位置: 首页 > 知识库问答 >
问题:

前端代理映射配置?

冯旭
2024-03-20

背景:

vue3+vite项目中:前后端联调的时候,
代理转发设置成功,但是由于接口文件中有多个文件,一个个加代理配置比较麻烦,所以想着给接口增加前缀的方式去统一设置代码

比如接口文件中有如下两个接口,url分别如下

'/chekTicketData/list','/getManagerData/page',

统一增加前缀/sys

'/sys/chekTicketData/list','/sys/getManagerData/page',

在本地.env.development文件中统一配置设置转发

VITE_PROXY = '[  ["/api/sys", "http://10.9.33.8:10049"]]'

接口可以正常响应,但是这个/sys是自己自定义的,而且这个设置是在.env.development。请问下要在项目的测试环境和生产环境做映射吗?映射/sys对应的服务

共有2个答案

吕高雅
2024-03-20

需要在nginx侧做映射。
比如你本地的proxy是如下

VITE_PROXY = '[  ["/sys", "http://10.9.33.8:10049"]]'

那么nginx就需要做如下配置

server {    listen       8066;    location /sys {        proxy_pass http://10.9.33.8:10049;    }}
白博易
2024-03-20

前端代码里面加下环境判断增减前缀就行了,测试环境和生产环境都不用动。

const apiPrefix = import.meta.env.MODE === 'development' ? '/sys' : '';`${apiPrefix}/chekTicketData/list`,

也可以直接在你的请求工具中加(比如axios),这样就不用每个接口上加前缀了。

如果/sys是前端单方面加的,需要使用rewrite去掉:

{  '/api': {    target: 'http://jsonplaceholder.typicode.com',    changeOrigin: true,    rewrite: (path) => path.replace(/^\/api/, '')  }}

https://www.vitejs.net/config/#server-proxy

 类似资料:
  • 问题内容: 现在是2015年7月16日,情况又发生了变化。我从Jason Wilder 找到了这个自动魔术容器: 它可以解决这个问题,只要将它带到容器中即可。现在这是我用来解决此问题的解决方案。 更新资料 现在是2015年7月,关于联网Docker容器的情况已经发生了巨大变化。现在有许多不同的产品(以多种方式)解决了这个问题。 您应该使用这篇文章对服务发现的方法有一个基本的了解,它几乎是最基本的,

  • 本节描述了可用于映射器的各种配置模式。它假设你已经完成了 对象关系教程(1.x API) 并且知道如何构造和使用基本的映射器和关系。 映射Python类 声明性映射 非动态创建显式基础(与mypy一起使用,类似) 使用修饰符的声明性映射(无声明基) 具有数据类和属性的声明性映射 命令(又称经典)映射 具有数据类和属性的命令式映射 映射器配置概述 要映射的类 表或其他from子句对象 属性字典 其他

  • webpack官方文档对eval的描述: eval - 每个模块都使用 eval() 执行,并且都有 //# sourceURL。此选项会非常快地构建。主要缺点是,由于会映射到转换后的代码,而不是映射到原始代码(没有从 loader 中获取 source map),所以不能正确的显示行数。 但是在实际的操作过程中 为什么能映射到具体的行列信息呢

  • 前缀映射,后缀映射和缓存映射 通过 names.NewPrefixMapper(names.SnakeMapper{}, "prefix") 可以创建一个在 SnakeMapper 的基础上在命名中添加统一的前缀,当然也可以把 SnakeMapper{} 换成 SameMapper 或者你自定义的 Mapper。 例如,如果希望所有的表名都在结构体自动命名的基础上加一个前缀而字段名不加前缀,则可以

  • 为让大家尽快了解Envoy如何作为前端代理,我们发布了一个docker compose沙箱,这个沙箱部署了一个前端Envoy代理和几个后端服务(简单的flask应用),并与一个正在运行的合作的Envoy服务。这三个容器将部署在名为envoymesh的虚拟网格中。 该Docker compose的部署图如下所示: 所有传入的请求都通过前端Envoy进行路由,该Envoy充当位于envoymesh网络

  • 问题内容: 我不知道为什么一个类是一个,但是一个实例只是一个普通的 问题答案: 这有助于解释器确保类级属性和方法的键只能是字符串。 在其他地方,Python是一种“成年人同意语言”,这意味着对象的指示由用户公开和可变。但是,对于类的类级属性和方法,如果可以保证键是字符串,则可以在类级简化和加快用于属性和方法查找的常见案例代码。尤其是,通过假定类dict键为字符串,可以简化和加快用于新型类的__mr