使用Swagger 2.0进行REST API版本控制

Jas*_*ngh 11 rest node.js swagger

我需要对我的Node REST API进行版本控制.我使用swagger 2.0作为验证中间件和文档.目前我只有一个swagger yml文件,用于所有目的.

我正在使用url前缀(版本号:/ v1/.../v2/...等)来支持我的Node Rest API中的版本控制.我需要在任何时候支持多个版本.

  1. 我应该为每个API版本创建一个单独的swagger yml文件吗?如果是,如何在swagger验证中间件中加载/管理多个swagger yml文件
  2. Swagger 2.0格式规范是否允许在同一文件中定义版本化路径.

feh*_*guy 19

Swagger没有指定版本控制方案只是因为没有单一的解决方案,强制一种方法使用规范是没有意义的.以下是我见过的常用技巧:

1)将您的身份验证绑定到版本.我认为这是处理版本控制的最酷方式,但也是支持和维护最昂贵的方法.例如,基于用于访问服务的api密钥,您可以跟踪他们期望访问的版本,并将其路由到正确的服务器.在这种情况下,您可以简单地运行多个服务,并使用不同的swagger定义.

2)使用路径部分指示版本.这意味着你有一个/v2/v3在你的路径,并在此基础上,一些路由逻辑指向正确的服务器.再一次,一个单独的招摇定义.

3)基于某些标题,让用户选择要与之通话的服务器.这非常不直观,但它可以工作.你应该总是有一个默认版本(通常是最新版本)

也就是说,上述所有解决方案都意味着多个招摇文件.您可以使用$ ref语法来链接和重用规范的各个部分.

我相信使用swagger工具,您可以让多个实例监听请求.您只需要在它们前面有一个路由层来处理您选择的不同版本.