fix: align track API path rewrite with Vite for ideship
All checks were successful
Build and Deploy Front / deploy (push) Successful in 5m40s
All checks were successful
Build and Deploy Front / deploy (push) Successful in 5m40s
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
ef74985ad9
commit
07f241ab64
@ -52,6 +52,35 @@ function isItfxSpaPath(afterApi: string): boolean {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 与 vite.config rewriteTrackProxyPath 一致:ideship PATHBASE=/track 只需单段 Track */
|
||||||
|
const TRACK_ROOT_SERVICES = ['Warning', 'ProviderService', 'Dictionary'] as const
|
||||||
|
|
||||||
|
function usesIdeshipTrackPath(origin: string): boolean {
|
||||||
|
return /ideship\.com/i.test(origin)
|
||||||
|
}
|
||||||
|
|
||||||
|
/** /Track/... → /track/...(ideship 剥掉历史双 Track) */
|
||||||
|
function rewriteTrackApiPath(path: string, origin: string): string {
|
||||||
|
for (const name of TRACK_ROOT_SERVICES) {
|
||||||
|
const prefix = `/Track/${name}`
|
||||||
|
if (path === prefix || path.startsWith(`${prefix}/`)) {
|
||||||
|
return `${origin}/track${path.slice('/Track'.length)}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (usesIdeshipTrackPath(origin) && path.startsWith('/Track/Track/')) {
|
||||||
|
return `${origin}/track/Track/${path.slice('/Track/Track/'.length)}`
|
||||||
|
}
|
||||||
|
return `${origin}/track${path}`
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 已是 /track/... 时,ideship 仍规范化多余的 /Track/Track/ */
|
||||||
|
function normalizeTrackPathbase(path: string, origin: string): string {
|
||||||
|
if (usesIdeshipTrackPath(origin) && path.startsWith('/track/Track/Track/')) {
|
||||||
|
return `${origin}/track/Track/${path.slice('/track/Track/Track/'.length)}`
|
||||||
|
}
|
||||||
|
return `${origin}${path}`
|
||||||
|
}
|
||||||
|
|
||||||
/** 生产:遗留路径 → https://api.ideship.com/{itfx|track|admin}/... */
|
/** 生产:遗留路径 → https://api.ideship.com/{itfx|track|admin}/... */
|
||||||
export function rewriteBrowserApiPath(url: string): string {
|
export function rewriteBrowserApiPath(url: string): string {
|
||||||
if (!url || import.meta.env.DEV) return url
|
if (!url || import.meta.env.DEV) return url
|
||||||
@ -63,14 +92,13 @@ export function rewriteBrowserApiPath(url: string): string {
|
|||||||
const origin = prodApiOrigin()
|
const origin = prodApiOrigin()
|
||||||
|
|
||||||
// 已是绝对 PATHBASE 相对路径 → 挂到 api 域名
|
// 已是绝对 PATHBASE 相对路径 → 挂到 api 域名
|
||||||
if (
|
if (path.startsWith('/itfx/') || path === '/itfx') {
|
||||||
path.startsWith('/itfx/') ||
|
return `${origin}${path}`
|
||||||
path === '/itfx' ||
|
}
|
||||||
path.startsWith('/track/') ||
|
if (path.startsWith('/track/') || path === '/track') {
|
||||||
path === '/track' ||
|
return normalizeTrackPathbase(path, origin)
|
||||||
path.startsWith('/admin/') ||
|
}
|
||||||
path === '/admin'
|
if (path.startsWith('/admin/') || path === '/admin') {
|
||||||
) {
|
|
||||||
return `${origin}${path}`
|
return `${origin}${path}`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,11 +121,15 @@ export function rewriteBrowserApiPath(url: string): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (path.startsWith('/Track')) {
|
if (path.startsWith('/Track')) {
|
||||||
return `${origin}/track${path}`
|
return rewriteTrackApiPath(path, origin)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (path.startsWith('/trackApi/')) {
|
if (path.startsWith('/trackApi/')) {
|
||||||
return `${origin}/track/${path.slice('/trackApi/'.length)}`
|
const rest = path.slice('/trackApi/'.length)
|
||||||
|
if (usesIdeshipTrackPath(origin) && rest.startsWith('Track/Track/')) {
|
||||||
|
return `${origin}/track/Track/${rest.slice('Track/Track/'.length)}`
|
||||||
|
}
|
||||||
|
return `${origin}/track/${rest}`
|
||||||
}
|
}
|
||||||
|
|
||||||
return path
|
return path
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user