从typescript接口生成swagger文档

3yhwsihp  于 2023-08-05  发布在  TypeScript
关注(0)|答案(3)|浏览(213)

我使用swager-jsdoc来记录应用程序的所有DTO。
我想知道有没有什么方法可以从typescript接口自动生成swagger文档。
我在项目中有很多这样的模式,还有很多 Mongoose 模式和模型。让它们保持同步变得越来越乏味。另一方面,我不想使用swagger生成工具。我更喜欢自下而上的方法。
干杯

vh0rcniy

vh0rcniy1#

tsoa的另一个选项是routing-controllers + routing-controllers-openapi。两者(AFAIK)的主要区别在于tsoa依赖于代码生成,而routing-controllers完全在运行时运行。这两种方法都有其优点:tsoa能够例如利用更丰富的元数据(如代码注解),而使用routing-controllers,我们可以跳过生成步骤。我的建议是两个都去看看!
还有一个选项是typescript-json-schema,它从Typescript接口生成JSON Schema;在JSON Schema中定义了模型之后,您就离OpenAPI规范不远了。

rekjcdws

rekjcdws2#

是的,您可以通过使用tsoa从TypeScript类型轻松生成Swagger和OpenAPI文档。自述文件包含开始使用它所需的所有设置信息。它与express、hapi、koa等兼容:
https://github.com/lukeautry/tsoa
(Full透明度:我是tsoa的维护者之一。但我首先是tsoa的消费者,我发现它是一个很棒的产品。所以我才要求帮忙维护!:))我后来退了一步,但新的维护者太棒了!

dw1jzc5e

dw1jzc5e3#

另一个选项是使用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
 */

相关问题