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

Node.js 使用Swagger 2.0进行REST API版本控制,node.js,rest,swagger,Node.js,Rest,Swagger,我需要对我的节点RESTAPI进行版本控制。我正在使用swagger 2.0作为验证中间件和文档。目前,我只有一个用于所有目的的swagger yml文件 我正在使用url前缀(版本号:/v1/../v2/…等)来支持节点Rest API中的版本控制。我需要在任何时候支持多个版本 我应该为每个API版本创建一个单独的swagger yml文件吗?如果是,如何在swagger验证中间件中加载/管理多个swagger yml文件 Swagger 2.0格式规范是否允许在同一文件中定义版本化路径 Sw

我需要对我的节点RESTAPI进行版本控制。我正在使用swagger 2.0作为验证中间件和文档。目前,我只有一个用于所有目的的swagger yml文件

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

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

  • Swagger不会仅仅因为没有单一的解决方案而指定版本控制方案,强制一种方法使用规范也没有意义。以下是我见过的常见技术:

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

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

    3) 根据某个标头,让用户选择与哪个服务器对话。这是相当不直观的,但它可以工作。您应该始终具有默认版本(通常为最新版本)

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


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

    是否可以将swagger配置为将{version}变量设置为路径,就像我在my yaml version=2中定义的那样,并且swagger将生成路径“/v2/tasks/”或/tasks/v2/?您完全可以将版本作为
    /{versionId}/tasks
    放在路径中,并使用路径参数捕获
    versionId
    我可能不清楚我的描述,我想要一个带有版本的api修复字符串,而不是路径参数。就像我在yaml中定义版本v1一样,我得到了/tasks/v2URL。也许这更像是一个yaml问题,而不是一个招摇过市的问题problem@fehguy我正在努力解决同一个问题(swagger v3),您找到解决方案了吗?