Nestjs Swagger - 在不同的路线上发布不同的 API 文档

Nestjs Swagger - Publishing different API docs on separate routes

我正在构建一个包含 public API 和内部应用的应用。我想将这些文档发布到不同的路线。我认为这可以通过仅向文档添加某些标签来实现 (addTag),但在进一步阅读和实验后它并没有完成这项工作。

文档始终包含所有内容,所有模块的所有记录端点。

这可能吗?如果是,怎么做?

我认为代码不是必需的,但 FWIW:

const pubOptions = new DocumentBuilder()
    .setTitle('Pub API Docs')
    .setDescription('Blah blah API documentation')
    .setVersion(p.version)
    .addBearerAuth()
    .addTag('public-app')
    .build();
const document = SwaggerModule.createDocument(app, pubOptions);
SwaggerModule.setup('public-api', app, document);

const internalOptions = new DocumentBuilder()
    .setTitle('Internal API Docs')
    .setDescription('Blah blah API documentation')
    .setVersion(p.version)
    .addBearerAuth()
    .addTag('internal')
    .build();
const iDocument = SwaggerModule.createDocument(app, internalOptions);
SwaggerModule.setup('internal-api', app, iDocument);

您需要告诉 SwaggerModule.createDocument 函数要在要组合的 swagger 中包含哪些模块。 Here are the related docs。作为第三个参数,您可以传入一个包含模块数组的 include 属性 对象。这些模块是和即将构建的swagger文档相关的。