在TypeScript中创建一个swagger Web服务的正确方法是什么

Yuv*_*ert 7 node.js swagger typescript

我是用TypeScipt编写的项目的一部分,我正在尝试添加与Swagger兼容的TypeScript Web Server.
考虑到易维护性,实施它的最基本策略是什么.

  • 对于Typescript,我注意到存在'Typson'库,用于从TypeScript接口生成JSON模型.

  • 对于Swagger,我尝试使用'swagger-node-restify'库,因为它支持添加JSON模型swagger.

但是,我遇到了一些问题:

  1. Typson不支持Import - (import {Server} from "restify")的typeScript 语法
  2. 我试图实现'swagger-node-restify'示例(宠物示例),但是localhost:8080/api-docs.json GET请求的RESPONSE缺少API的所有SPEC数据. {"apiVersion":"0.1","swaggerVersion":"1.1","basePath":"http://localhost:8080","apis":[{"path":"/api-docs.{format}/pet","description":"none"}]}

Hen*_*Tel 5

我建议使用或描述符合 Swagger 的 API并从中生成服务器yamljson

swagger-server可以express实时构建 API (不生成源代码)。

JavaScript代码生成器

  • 调用 swagger-codegen 客户端 -l nodejs-server

  • swagger-node是一个很好的选择,但似乎很难与TypeScript


Gre*_*ons 5

是的,您可以使用tsoa从 TypeScript 类型轻松生成 Swagger 和 OpenAPI 文档。自述文件包含开始使用它所需的所有设置信息。它与express、hapi、koa等兼容(通过为您首选的服务器类型添加您自己的模板的能力):

https://github.com/lukeautry/tsoa

tsoa相对于其他库的优点是:

  • 它既生成 swagger/OpenAPI 文档,又在运行时验证类型

(完全透明:我是 tsoa 的维护者之一。但我首先是 tsoa 的消费者,我发现它是一个很棒的产品......这就是为什么我要求帮助维护它!:))