“nestjs/swagger”中的哪个函数将 DTO 转换为 Swagger 模型定义?
Posted
技术标签:
【中文标题】“nestjs/swagger”中的哪个函数将 DTO 转换为 Swagger 模型定义?【英文标题】:Which function in "nestjs/swagger" converts DTOs to Swagger model definitions? 【发布时间】:2020-03-25 12:41:26 【问题描述】:我使用Class-Validator 指定了 DTO,我正在寻找一个可用于从中生成 Swagger 规范的库。我没有将它用于 REST API,代码正在解决 IoT/MQTT 场景 - 我只是使用 Class-Validator 来管理 JSON。
NestJS/Swagger 是维护最好的库。我想使用它的能力在没有 NestJS 服务器的情况下生成 Swagger 定义。理想情况下,我想传入一个 DTO 定义并获得它的 Swagger 模式。
我一直在阅读源代码,但很难理解框架中的哪个函数实际上是这样做的。充其量,我已经能够追踪到modelsDefinitions
property in swagger-explorer
class。
据我所知,api-parameters.explorer
和 api-produces.explorer
。我不清楚他们的工作方式。我想知道有人可以帮助我吗?
我想补充一点,我知道class-validator-jsonschema
,但它没有得到维护,似乎不再正常工作。
【问题讨论】:
index.ts 导出的主模块好像是 github.com/nestjs/swagger/blob/master/lib/swagger-module.ts ,好像用到了 fastify-swagger 和 swagger-ui-express 等库以及一堆自定义代码。您是否有机会查看该代码以及它如何与标准 Nest 项目一起使用? 是的,我试图追踪 swagger-module 调用了哪些代码,结果卡在了上面的大纲中。我认为 Swagger ui 和 fastify 与构建模型无关。 【参考方案1】:nestjs/swagger
不会将您需要的内容公开为您无法访问的公共 API。您要查找的类是SchemaObjectFactory
,方法是exploreModelSchema
。
参考:
SwaggerObjectFactory Test【讨论】:
以上是关于“nestjs/swagger”中的哪个函数将 DTO 转换为 Swagger 模型定义?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 nestjs/swagger 更改查询参数序列化?