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

时间:2016-03-07 09:06:24

标签: node.js typescript swagger

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

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

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

然而,我遇到了一些问题:

  1. Typson不支持导入的typeScript 语法 - (import {Server} from "restify"
  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"}]}

2 个答案:

答案 0 :(得分:3)

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

swagger-server可以在express之上实时构建API(无源代码生成)。

JavaScript代码生成器

  • 使用-l nodejs-server

  • 调用swagger-codegen客户端
  • swagger-node是一个很好的选择,但似乎很难与TypeScript

  • 整合

答案 1 :(得分:0)

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

https://github.com/lukeautry/tsoa

tsoa与其他库相比的优势是:

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

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