版本化Nestjs路线?

Bra*_*don 5 nestjs

我刚刚开始使用Nestjs,我想知道如何使用路由前缀或通过Express Router实例来对我的API进行版本控制?

理想情况下,我想通过以下方式访问端点:

/v1
/v2
Run Code Online (Sandbox Code Playgroud)

等等,所以我可以优雅地降低端点.我没有看到我可以添加版本前缀的位置.我知道可以在应用程序实例上设置全局前缀,但这不适用于特定的端点集.

Kam*_*iec 5

这是关于RouterModule https://github.com/nestjs/nest/issues/255的公开讨论.我理解这个功能有多重要,所以它应该在不久的将来出现.此时,有必要将v1/ v2直接放入@Controller()装饰器中.


Sha*_*ifa 5

路由器模块来救援,有了 Nest,RouterModule现在可以轻松组织您的路线。

\n\n

请参阅如何轻松设置。

\n\n
const routes: Routes = [\n    {\n      path: \'/ninja\',\n      module: NinjaModule,\n      children: [\n        {\n          path: \'/cats\',\n          module: CatsModule,\n        },\n        {\n          path: \'/dogs\',\n          module: DogsModule,\n        },\n      ],\n    },\n  ];\n\n@Module({\n  imports: [\n      RouterModule.forRoutes(routes), // setup the routes\n      CatsModule,\n      DogsModule,\n      NinjaModule\n      ], // as usual, nothing new\n})\nexport class ApplicationModule {}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这会产生这样的结果:

\n\n
ninja\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 /\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 /katana\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cats\n    \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 /\n    \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 /ketty\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dogs\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 /\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 /puppy\n
Run Code Online (Sandbox Code Playgroud)\n\n

当然,对于版本控制路线,您可以执行与此类似的操作

\n\n
const routes: Routes = [\n    {\n      path: \'/v1\',\n      children: [CatsModule, DogsModule],\n    },\n    {\n      path: \'/v2\',\n      children: [CatsModule2, DogsModule2],\n    },\n  ];\n
Run Code Online (Sandbox Code Playgroud)\n\n

好的 !

\n\n

检查一下Nest 路由器

\n