我正在使用swager-jsdoc记录应用程序的所有DTO。
我想知道是否有办法从typescript接口自动生成swagger文档。
项目中有很多这样的接口和mongoose模式和模型,保持同步变得非常繁琐。另一方面,我不想使用swagger生成工具。我更喜欢自下而上的方法。
干杯
我正在使用swager-jsdoc记录应用程序的所有DTO。
我想知道是否有办法从typescript接口自动生成swagger文档。
项目中有很多这样的接口和mongoose模式和模型,保持同步变得非常繁琐。另一方面,我不想使用swagger生成工具。我更喜欢自下而上的方法。
干杯
tsoa
依赖于代码生成,而 routing-controllers
完全在运行时操作。这两种方法都有其优点:tsoa
能够使用更丰富的元数据(例如代码注释),而使用 routing-controllers
,我们可以跳过生成步骤。我的建议是两个都试试!另外还有一个选项是 typescript-json-schema,它可以从 Typescript 接口生成 JSON Schema;在你使用 JSON Schema 定义了模型之后,你离 OpenAPI 规范并不遥远。https://github.com/lukeautry/tsoa
例如:考虑下面的 User 接口:
export interface User {
name: string;
email: string;
nickname?: string;
}
在终端中运行以下命令:
npx ts-to-openapi -f User.ts -t User >> User.ts
export interface User {
name: string;
email: string;
nickname?: string;
}
/**
* @swagger
* components:
* schemas:
* User:
* additionalProperties: false
* properties:
* email:
* type: string
* name:
* type: string
* nickname:
* type: string
* required:
* - name
* - email
* type: object
*/