nest.js 模块路由前缀

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 {}

你可能感兴趣的:(nest.js 模块路由前缀)