nestjs 中的多个全局前缀
Posted
技术标签:
【中文标题】nestjs 中的多个全局前缀【英文标题】:More than one global prefix in nestjs 【发布时间】:2021-02-10 19:51:38 【问题描述】:import NestFactory from '@nestjs/core';
import AppModule from './app.module';
async function bootstrap()
const app = await NestFactory.create(AppModule);
app.setGlobalPrefix("v1");
app.setGlobalPrefix("v2");
await app.listen(3000);
bootstrap();
我想要两个版本的 API,所以想知道如何设置两个全局前缀?
【问题讨论】:
【参考方案1】:您可以通过使用NestFactoryStatic
初始化一个工厂来创建单独的工厂,通过调用setGlobalPrefix
为该工厂设置一个全局前缀并通过调用init
方法对其进行初始化。
这是一个关于如何执行此操作的示例,源自 source:
async function bootstrap()
const server = express();
const config = require('../../etc/config.js');
const apiFactory = new NestFactoryStatic();
const api = await apiFactory.create(ApiModule, server);
api.setGlobalPrefix("/api/v1");
await api.init();
const adminFactory = new NestFactoryStatic();
const admin = await adminFactory.create(AdminModule, server);
admin.setGlobalPrefix("/admin");
await admin.init();
http.createServer(server).listen(config.server.port);
bootstrap();
【讨论】:
【参考方案2】:据我所知,您无法使用 setGlobalPrefix
执行此操作,也没有对提到的 in the docs 的支持。但是您可以为每个版本创建两个控制器并在那里设置基本路径:
@Controller('/v1')
export class ApiControllerV1
@Get()
findAll(): string
return 'This action returns all cats';
@Controller('/v2')
export class ApiControllerV2
@Get()
findAll(): string
return 'This action returns all cats';
【讨论】:
@Gaurav:有什么反馈吗?以上是关于nestjs 中的多个全局前缀的主要内容,如果未能解决你的问题,请参考以下文章