我正在开发一个 NestJS 应用程序,我正在尝试为特定模块设置前缀,并将其应用于父模块及其子模块。我定义了这样的模块结构:
/src/api/
├── api.module.ts
└── auth/
├── auth.module.ts
└── controller/
└── auth.controller.ts
在我的 app.module.ts 中,我为 ApiModule 定义了一个前缀,如下所示:
import { Module } from "@nestjs/common";
import { ApiModule } from "./api/api.module";
import { RouterModule } from "@nestjs/core";
@Module({
imports: [
ApiModule,
RouterModule.register([
{
path: "api",
module: ApiModule,
},
]),
],
})
export class AppModule {}
在我的 api.module.ts 中:
import { Module } from "@nestjs/common";
import { AuthModule } from "./auth/auth.module";
@Module({
imports: [AuthModule],
})
export class ApiModule {}
但是,该前缀似乎仅适用于 ApiModule 中的控制器,AuthModule 中的控制器不受影响。如何设置适用于 ApiModule 及其子模块(包括 AuthModule)的前缀?
任何有关如何实现这一目标的帮助或指导将不胜感激。
当你有
RouterModule.register([
{
path: "api",
module: ApiModule,
},
]),
前缀
api
仅适用于在ApiModule
内注册的控制器,含义:
@Module({
controllers: [], // within this array
})
export class ApiModule {}
如果您打算将全局前缀
api
应用于所有控制器(在每个模块中),您可以在 main.ts
中执行此操作:
const app = await NestFactory.create(AppModule);
app.setGlobalPrefix('api');