【问题标题】:More than one global prefix in nestjsnestjs 中的多个全局前缀
【发布时间】: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,所以想知道如何设置两个全局前缀?

【问题讨论】:

    标签: node.js nestjs


    【解决方案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:有什么反馈吗?
      猜你喜欢
      • 2015-03-08
      • 2013-01-26
      • 2018-06-15
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 2022-08-11
      相关资源
      最近更新 更多