🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 路由模块 > **提示**:本章仅与基于 HTTP 的应用程序相关。 在 HTTP 应用程序(例如,REST API)中,处理程序的路由路径是通过连接为控制器声明的(可选)前缀(在`@Controller`装饰器中)和方法的装饰器中指定的任何路径(例如,`@Get('users')`)。您可以在\[此部分\](https://docs.nestjs.com/controllers#routing) 中了解更多信息。此外,您可以为应用程序中注册的所有路由定义一个\[全局前缀\](https://docs.nestjs.com/faq/global-prefix),或启用\[版本控制\](https://docs.nestjs.com/techniques/versioning)。 此外,在模块级别定义前缀(因此对于在该模块内注册的所有控制器)可能会派上用场。例如,假设一个 REST 应用程序公开了几个不同的端点,这些端点被应用程序的特定部分使用,称为“仪表板”。在这种情况下,您可以使用实用程序`RouterModule`模块,而不是在每个控制器中重复`/dashboard`前缀,如下所示: ~~~typescript @Module({ imports: [ DashboardModule, RouterModule.register([ { path: 'dashboard', module: DashboardModule, }, ]), ], }) export class AppModule {} ~~~ > \*\*提示\*\*`RouterModule`类是从`@nestjs/core`包中导出的。 此外,您可以定义层次结构。这意味着每个模块都可以有`子`模块。子模块将继承其父模块的前缀。在下面的例子中,我们将`AdminModule`注册为`DashboardModule`和`MetricsModule`的父模块。 ~~~typescript RouterModule.register([ { path: 'admin', module: AdminModule, children: [ { path: 'dashboard', module: DashboardModule, }, { path: 'metrics', module: MetricsModule, }, ], }, ]); ~~~ > **提示**:应该非常小心地使用此功能,因为过度使用它会使代码随着时间的推移难以维护。 在上面的示例中,在`DashboardModule`中注册的任何控制器都将具有额外的`/admin/dashboard`前缀(因为模块从上到下连接路径 - 递归 - 父级到子级)。同样,在`MetricsModule`中定义的每个控制器都会有一个额外的模块级前缀`/admin/metrics`。