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

PeS*_*PeS 7 swagger nestjs nestjs-swagger

我正在构建一个具有公共 API 和内部 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);

Run Code Online (Sandbox Code Playgroud)

Jay*_*iel 8

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