我需要对我的Node REST API进行版本控制 . 我使用swagger 2.0作为验证中间件和文档 . 目前我只有一个swagger yml文件,用于所有目的 .
我正在使用url前缀(版本号:/ v1 / ... / v2 / ...等)来支持我的Node Rest API中的版本控制 . 我需要在任何时候支持多个版本 .
-
我应该为每个API版本创建一个单独的swagger yml文件吗?如果是,如何在swagger验证中间件中加载/管理多个swagger yml文件
-
Swagger 2.0格式规范是否允许在同一文件中定义版本化路径 .
1 回答
Swagger没有简单地指定版本控制方案,因为没有单一的解决方案,强制一种方法使用规范是没有意义的 . 以下是我见过的常用技巧:
1)将您的身份验证绑定到版本 . 我认为这是处理版本控制的最酷方式,但也是支持和维护最昂贵的方法 . 例如,基于用于访问服务的api密钥,您可以跟踪他们期望访问的版本,并将其路由到正确的服务器 . 在这种情况下,您可以简单地运行多个服务,并使用不同的swagger定义 .
2)使用路径部分指示版本 . 这意味着您的路径中有
/v2
或/v3
,并且基于此,一些路由逻辑将您指向正确的服务器 . 再一次,一个单独的招摇定义 .3)基于某些 Headers ,让用户选择要与之通话的服务器 . 这非常不直观,但它可以工作 . 您应始终拥有默认版本(通常是最新版本)
也就是说,所有上述解决方案都意味着多个文字 . 您可以使用$ ref语法来链接和重用规范的各个部分 .
我相信使用swagger-tools,您可以让多个实例监听请求 . 您只需要在它们前面有一个路由层来处理您选择的不同版本 .