如何统一修改路由前缀

http://xxx.xxx.xxx.xxx/api/v1/airline/list?page=18pageSize=1000100

http://xxx.xxx.xxx.xxx/v1/airline/list?page=18pageSize=10

这块的路由统一一下

你可以前面都加一个api的前缀,或者涉及v1的都不要api

排查航线接口为何请求到 http://xxx.xxx.xxx.xxx/v1/... 的完整地址,并统一为相对路径(配合 nginx 或 /api)。

定位为:baseURL: '' 覆盖了 axios 默认的 /api/,导致请求变成当前站点根下的 /v1/...(部署在 xxx.xxx.xxx.xxx 时显示为完整 IP)。将去掉该覆盖,使 /v1 走 /api/v1/...,并调整 Vite 代理顺序(先匹配 /api/v1 再匹配 /api)。

// 航线管理新页面专用:与主接口共用 VITE_API_BASE_PATH(如 /api/),路径为 /api/v1/...,由 nginx / 开发代理转发到 8081

新增这个

      port: 4004,

      proxy: {

        // 必须先写更长的前缀:/api/v1 走 8081,避免被下面的 /api 整条吃掉

        '/api/v1': {

          target: 'http://xxx.xxx.xxx.xxx:8081',

          changeOrigin: true,

          rewrite: (path) => path.replace(/^\/api\/v1/, '/v1')

        },

删除这个

    // /v1 开头接口统一转发到 8081

        '/v1': {

          target: 'http://xxx.xxx.xxx.xxx:8081',

          

已经按「主接口走 /api,8081 那套走 /api/v1(由网关/nginx 转发成后端的 /v1)」把路由统一了,并修了开发代理。

原因说明

api*8081 里写了 baseURL: '',会盖掉 axios 实例上的 VITE_API_BASE_PATH(例如 /api/),请求就变成当前页面域名 + /v1/...,所以你会看到 http://xxx.xxx.xxx.xxx/v1/...(页面部署在这个 IP 上时就像「写死 IP」)。

代码上做了什么

  1. src/api/airlineManagement/index.ts

    • 去掉所有 baseURL: ''
    • 航线相关接口仍用 /v1/...,在 baseURL=/api/ 时会拼成 /api/v1/...(与领导说的「前面加 api」一致)
  2. vite.config.ts 开发代理

    • 增加 /api/v1 → 8081,并把路径 /api/v1 改写成 /v1 再转发(和原来单独 /v1 代理效果一致)
    • /api/v1 必须写在 /api 前面,否则会被 /api 整条代理到 8000
    • 删除了单独的 /v1 规则(避免和统一前缀两套并存)

你本地要做什么

  1. 重新打包部署:pnpm run build:pro
  2. 确认 nginx 已按上面增加 /api/v1/ 这一段后再上线。

如果你更希望「所有接口都只走 /api,不要 /api/v1 这一层」,也可以再说一下,我按另一种 nginx 写法改一版(要动路径规则会稍不同)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值