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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容