当前位置: 首页 > 知识库问答 >
问题:

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

郎成龙
2023-03-14

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

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

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

共有1个答案

阎咏思
2023-03-14

Swagger没有指定版本化方案,仅仅是因为没有单一的解决方案,并且强迫一种方法使用该规范是没有意义的。以下是我见过的常用技巧:

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

2)使用路径部分来指示版本。这意味着您的路径中有一个/v2/v3,在此基础上,一些路由逻辑将您指向正确的服务器。同样,一个单独的昂首阔步定义。

3)根据某些标头,让用户选择要与哪个服务器交谈。这很不直观,但它可以工作。您应该始终有一个默认版本(通常是最新版本)

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

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

 类似资料:
  • 针对 Subversion 1.4(根据r2866编译) 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书的结构 本书是免费的 致谢 来自 Ben Collins-Sussman 来自 Brian W. Fitzpatrick 来自 C. Michael Pilato Subversion是什么? Subversion的历史 Subversion的特性 Subversion的架构 S

  • 问题内容: 我目前正在独自完成多个项目(至少开发部分仅由我自己完成:)。结合使用带有不同Java,R,SQL和其他源文件的Eclipse,我想知道哪种版本控制系统最适合我。 当时Eclipse IDE的历史似乎就足够了,但是我不确定在一个月/一年中是否会如此。 您会推荐什么解决方案,为什么? 更准确地说:如果我决定使用完整的版本控制系统,我一定会使用SVN或git。但是我不确定是否有必要… 问题答

  • 我是全新的RestTemboard和基本上在REST API也。我想通过Jira REST API检索我的应用程序中的一些数据,但取回401未经授权。在jira rest api留档上找到并发表文章,但不知道如何将其重写为java,因为示例使用curl的命令行方式。我将感谢任何建议或建议如何重写: 进入java使用SpringRest模板。其中ZnJlZDpmcmVk是用户名:密码的Bas64编码

  • Unix was not designed to stop you from doing stupid things, because that would also stop you from doing clever things. — Doug Gwyn 你曾经遇到过误删除了某些文件而又希望恢复的情形吧? 本书中提及的最重要的技巧就是将 Puppet 的 配置清单(manifests)纳入像

  • 有没有任何一个测试REST API的使用硒网络驱动程序Maven TestNG。请分享信息或样本项目

  • 我目前有一个定期修订的文档,我想通过保存文档的每个旧版本来跟踪文档。因此,如果文档A有一个摘要和更新日期,我想在每次更新后,保留以前的版本及其更新数据。 问题是,我不确定该如何有效地做到这一点: 问题是,如果我将键作为值,那么自动生成的模式将把所有日期作为可能的键。这不是你想要的。 所以我的问题是在ElasticSearch中按日期跟踪所有修订的最有效方法是什么?