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」)。
代码上做了什么
-
src/api/airlineManagement/index.ts- 去掉所有
baseURL: '' - 航线相关接口仍用
/v1/...,在baseURL=/api/时会拼成/api/v1/...(与领导说的「前面加 api」一致)
- 去掉所有
-
vite.config.ts开发代理- 增加
/api/v1→ 8081,并把路径/api/v1改写成/v1再转发(和原来单独/v1代理效果一致) /api/v1必须写在/api前面,否则会被/api整条代理到 8000- 删除了单独的
/v1规则(避免和统一前缀两套并存)
- 增加
你本地要做什么
- 重新打包部署:
pnpm run build:pro - 确认 nginx 已按上面增加
/api/v1/这一段后再上线。
如果你更希望「所有接口都只走 /api,不要 /api/v1 这一层」,也可以再说一下,我按另一种 nginx 写法改一版(要动路径规则会稍不同)。

1万+

被折叠的 条评论
为什么被折叠?



