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,我们可以看到,路由包含了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 {}