nest.js 官方提供了兩種路由前綴:
1. 控制器前綴
@Controller('api')
export class LoginController {}
2.全局路由前綴
const app = await NestFactory.create(AppModule);
app.setGlobalPrefix("api")
現在,我們寫了很多模塊,例如:
AdminModule 管理后臺模塊雀扶,想使用?admin/?前綴;
MiniProgramModule??小程序模塊涣觉,想使用?mini/?前綴;
該怎么辦呢?
經過大佬我研究了一下nest.js的路有源碼
圖1
圖2
根據圖1灼擂,我們可以看到嫉入,路由包含了modulePath
根據圖2焰盗,我們可以看到,modulePath 為Module 模塊的 Metadata 的一個屬性?__module_path__
這個時候咒林,聰明的朋友應該知道怎么做了熬拒?
下面為大家演示下,添加這個 Metadata 屬性垫竞,就能添加模塊路由前綴了
AdminModule.ts
import { Module, SetMetadata } from '@nestjs/common';
import { MODULE_PATH } from '@nestjs/common/constants';
import { LoginController } from './controllers/login/login.controller';
@SetMetadata(MODULE_PATH, 'admin')
@Module({ controllers: [LoginController], providers: [],})
export class AdminModule {}