首页 文章

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

提问于
浏览
7

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

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

  • 我应该为每个API版本创建一个单独的swagger yml文件吗?如果是,如何在swagger验证中间件中加载/管理多个swagger yml文件

  • Swagger 2.0格式规范是否允许在同一文件中定义版本化路径 .

1 回答

  • 16

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

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

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

    3)基于某些 Headers ,让用户选择要与之通话的服务器 . 这非常不直观,但它可以工作 . 您应始终拥有默认版本(通常是最新版本)

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

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

相关问题