@lark-apaas/fullstack-nestjs-core 1.1.29 → 1.1.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,6 +9,7 @@ FullStack NestJS Core 是一个为 NestJS 全栈应用提供核心功能的工
9
9
  - **CSRF 保护**: 提供完整的 CSRF Token 生成和验证机制
10
10
  - **用户上下文**: 自动从请求头中提取并注入用户上下文信息
11
11
  - **视图上下文**: 将用户信息和 CSRF Token 注入到模板渲染上下文
12
+ - **旧路径兼容**: 灰度迁移期间自动将旧路径 302 重定向到新路径,实现平滑过渡
12
13
  - **开发工具**: 自动生成 Swagger 文档、OpenAPI JSON 和 TypeScript 客户端 SDK
13
14
  - **应用配置**: 一键配置 Logger、Cookie Parser、全局前缀等
14
15
 
@@ -58,6 +59,7 @@ export class AppModule {}
58
59
  - ✅ DataPaasModule (数据库连接)
59
60
  - ✅ AuthNPaasModule (认证系统)
60
61
  - ✅ UserContextMiddleware (用户上下文)
62
+ - ✅ LegacyPathRedirectMiddleware (旧路径兼容重定向)
61
63
  - ✅ CsrfTokenMiddleware + CsrfMiddleware (CSRF 保护)
62
64
  - ✅ ViewContextMiddleware (视图上下文)
63
65
  - ✅ ValidationPipe (全局验证管道)
@@ -404,6 +406,43 @@ HttpModule.register({
404
406
 
405
407
  ## 中间件
406
408
 
409
+ ### LegacyPathRedirectMiddleware
410
+
411
+ `CLIENT_BASE_PATH` 灰度切换到新路径格式(`/app/:appId`)后,将旧路径的页面请求 302 重定向到新路径,实现平滑过渡。已内置于 `PlatformModule`,无需手动注册。
412
+
413
+ #### 重定向规则
414
+
415
+ | 环境 (`req.userContext.env`) | 旧路径前缀 | 重定向目标 |
416
+ |---|---|---|
417
+ | `preview` | `/af/p/:appId/...` | `CLIENT_BASE_PATH/...` |
418
+ | `runtime` | `/spark/faas/:appId/...` | `CLIENT_BASE_PATH/...` |
419
+
420
+ #### 触发条件
421
+
422
+ - `CLIENT_BASE_PATH` 以 `/app/:appId` 格式开头(新路径格式)
423
+ - 请求路径匹配对应环境的旧前缀
424
+ - 请求路径不以 `/api` 开头(仅拦截页面请求)
425
+
426
+ #### 示例
427
+
428
+ ```
429
+ CLIENT_BASE_PATH = /app/cli_abc123
430
+
431
+ # 预览态旧链接访问
432
+ GET /af/p/cli_abc123/pages/home?tab=1
433
+ → 302 /app/cli_abc123/pages/home?tab=1
434
+
435
+ # 运行态旧链接访问
436
+ GET /spark/faas/cli_abc123/pages/home
437
+ → 302 /app/cli_abc123/pages/home
438
+ ```
439
+
440
+ #### 注意事项
441
+
442
+ - 中间件依赖 `UserContextMiddleware` 已填充 `req.userContext`,注册顺序不可颠倒
443
+ - 旧路径格式(`CLIENT_BASE_PATH` 不是 `/app/:appId`)下该中间件是空操作,没有额外开销
444
+ - 路径后缀和 query string 完整保留
445
+
407
446
  ### CsrfTokenMiddleware
408
447
 
409
448
  生成 CSRF Token 并设置到 Cookie 中,用于视图渲染场景。