从打字稿界面生成swagger文档

时间:2018-12-01 12:08:46

标签: typescript swagger openapi

我正在使用swager-jsdoc记录该应用程序的所有DTO。

我想知道有什么方法可以从打字稿界面自动生成swagger文档。

我在项目中有很多,还有很多猫鼬的模式和模型。使它们保持同步变得很乏味。另一方面,我不想使用招摇工具。我更喜欢自下而上的方法。

欢呼

3 个答案:

答案 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
 */