在没有控制器的情况下使用NestJS生成openApi DTO

时间:2019-11-01 21:40:56

标签: node.js typescript swagger nestjs openapi

我正在编写一个提供REST API的NestJS服务,它会将一些消息发布到NATS。我们正在使用NestJS支持来生成OpenAPI文档,然后从OpenAPI文档中生成导入到客户端的SDK。这一切都很好,但是SDK中只有我们代码的REST API。

我们还要做的就是让NestJS包含DTO,以供发布到NATS的邮件内容使用。然后,我们的SDK也将包含这些DTO的接口,然后我们的客户可以将消息内容转换为正确的接口(基于消息主题)。这样,事件的发布者可以定义事件的内容,并且事件的用户不必复制接口,但是他们可以获得强类型的代码。

我曾尝试将@Api装饰器添加到DTO,但似乎除非在@Controller的定义中使用DTO,否则它不会包含在生成的openApi文档中。

我一直希望在我的代码中装饰一个“随机” DTO,以便将其包含在swagger文档中,然后包含在生成的SDK中。这样有可能吗?

1 个答案:

答案 0 :(得分:0)

您还可以将extraModels数组作为SwaggerDocumentOptions的一部分传递

SwaggerModule.createDocument(app, config, {
   extraModels: [.......]
});

https://github.com/nestjs/swagger/issues/241