我正在使用swager-jsdoc记录该应用程序的所有DTO。
我想知道有什么方法可以从打字稿界面自动生成swagger文档。
我在项目中有很多,还有很多猫鼬的模式和模型。使它们保持同步变得很乏味。另一方面,我不想使用招摇工具。我更喜欢自下而上的方法。
欢呼
答案 0 :(得分:2)
是的,您可以使用tsoa从TypeScript类型轻松生成Swagger和OpenAPI文档。自述文件包含开始使用它所需的所有设置信息。它与Express,Hapi,Koa等兼容:
https://github.com/lukeautry/tsoa
(完全透明:我是tsoa的维护者之一。但是我最初是tsoa的消费者,所以我发现它是一个很棒的产品...这就是为什么我要求帮助维护它的原因:))
答案 1 :(得分:2)
tsoa的另一个选项是routing-controllers + routing-controllers-openapi。两者(AFAIK)之间的主要区别在于tsoa
依赖于代码生成,而routing-controllers
完全在运行时运行。两种方法都有其优点:tsoa
可以例如利用更丰富的元数据(例如代码注释),而使用routing-controllers
,我们可以跳过生成步骤。我的建议是同时检查一下!
还有一个选项是https://github.com/YousefED/typescript-json-schema,它从Typescript接口生成JSONS chema。在JSON Schema中定义了模型后,您与OpenAPI规范就相距不远了。
答案 2 :(得分:1)
另一种选择是使用https://www.npmjs.com/package/ts-to-openapi从接口生成Swagger模式。
示例:考虑以下用户界面:
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
*/