فهرست منبع

feat(proxy): 添加后端API前缀配置选项

添加 VITE_SERVER_HAS_API_PREFIX 环境变量用于控制代理是否保留/api前缀
根据配置决定是否重写代理路径中的/api前缀
feige996 7 ماه پیش
والد
کامیت
6653ea60fd
3فایلهای تغییر یافته به همراه9 افزوده شده و 1 حذف شده
  1. 2 0
      env/.env
  2. 2 0
      src/env.d.ts
  3. 5 1
      vite.config.ts

+ 2 - 0
env/.env

@@ -18,6 +18,8 @@ VITE_UPLOAD_BASEURL = 'https://ukw0y1.laf.run/upload'
 # h5是否需要配置代理
 VITE_APP_PROXY_ENABLE = true
 VITE_APP_PROXY_PREFIX = '/api'
+# 后端是否有统一前缀 /api,决定本地代码的时候是否需要去掉 /api 前缀。这里面默认是没有的,即前端会把/api 转发去掉
+VITE_SERVER_HAS_API_PREFIX = false
 
 # 第二个请求地址 (目前alova中可以使用)
 VITE_API_SECONDARY_URL = 'https://ukw0y1.laf.run'

+ 2 - 0
src/env.d.ts

@@ -19,6 +19,8 @@ interface ImportMetaEnv {
   readonly VITE_APP_PROXY_ENABLE: 'true' | 'false'
   /** H5是否需要代理,需要的话有个前缀 */
   readonly VITE_APP_PROXY_PREFIX: string // 一般是/api
+  /** 后端是否有统一前缀 /api */
+  readonly VITE_SERVER_HAS_API_PREFIX: 'true' | 'false'
   /** 认证模式,'single' | 'double' ==> 单token | 双token */
   readonly VITE_AUTH_MODE: 'single' | 'double'
   /** 上传图片地址 */

+ 5 - 1
vite.config.ts

@@ -52,6 +52,7 @@ export default ({ command, mode }) => {
     VITE_DELETE_CONSOLE,
     VITE_APP_PUBLIC_BASE,
     VITE_APP_PROXY_ENABLE,
+    VITE_SERVER_HAS_API_PREFIX,
     VITE_APP_PROXY_PREFIX,
   } = env
   console.log('环境变量 env -> ', env)
@@ -166,7 +167,10 @@ export default ({ command, mode }) => {
             [VITE_APP_PROXY_PREFIX]: {
               target: VITE_SERVER_BASEURL,
               changeOrigin: true,
-              rewrite: path => path.replace(new RegExp(`^${VITE_APP_PROXY_PREFIX}`), ''),
+              // 后端有/api前缀则不做处理,没有则需要去掉
+              rewrite: path => JSON.parse(VITE_SERVER_HAS_API_PREFIX)
+                ? path
+                : path.replace(new RegExp(`^${VITE_APP_PROXY_PREFIX}`), ''),
             },
           }
         : undefined,