问题标签 [api-versioning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
774 浏览

asp.net-core - 带有 Swagger 的版本化 API 未检测 API 操作

我实现了一个 API 并将其与Swagger集成。

启动配置服务

启动配置

控制器

到目前为止,一切都很好...

奇迹般有效。但是我升级到最新版本[Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer][2]并没有

我遵循了样本文档,但我无法显示我的操作......我在这里错过了什么?

启动配置服务

* SwaggerDefaultValues.cs

启动配置

控制器

0 投票
2 回答
8067 浏览

c# - NSwag .NET Core API 版本控制配置

我想准备我的.NET Core Web API项目,以便可以根据 REST 服务标准管理和记录 API 的多个版本。

我正在使用.NET Core 2.1NSwag (v11.18.2)。我还安装了Microsoft.AspNetCore.Mvc.Versioning NuGet 包。

我已经用谷歌搜索了一些配置示例,但我发现唯一有用的链接是这个

我现在可以获取两个 API 版本的 Swagger 页面,但存在一些问题:

  1. 请注意,最后的config设置(TitleDescription等)都不会对 2 条路线中的任何一条生效。它仅在我将它们添加到每个单独的配置时才有效。所以我也想知道是否可以避免这种情况,因为 API 的一般配置可以是版本独立的(标题、描述等......)。
  2. 由于上面链接中讨论的 NSwag 和 Microsoft API 版本控制包的问题是在 2-3 个月前打开的(以及 NSwag 版本),我想知道它现在是否真正得到修复,在这种情况下,这是要设置的正确配置。
  3. 虽然版本在控制器的配置中是明确的,但它仍然是控制器方法的强制输入参数,当然我不希望这样!见图片:

Swagger UI 测试需要版本作为方法的输入参数

因此,按照该示例,我的实际配置如下所示:

这些是我的实际控制器:

0 投票
0 回答
509 浏览

c# - 生成“Aspnet-api-versioning”时 Swagger 失败

我正在尝试使用 Microsoft 的aspnet-api-versioning让 Swagger 文档适用于我的 ASP.NET Core 应用程序,并按照此处的说明进行操作,这些说明似乎已过时,因为我必须进行更改以使其编译。

但是,每当我到达 /swagger 端点时,我都会收到以下错误“Count not render e, see console”:

在此处输入图像描述

我已经配置如下:

然后是一个非常简单的控制器:

因此,错误似乎缺少 Url 属性。但是我期待它来自 ASP.NET Api 版本控制?我在这里错过了什么,我需要做些什么来完成这项工作?

0 投票
1 回答
10271 浏览

php - Laravel API 版本控制文件夹结构

我是 api 版本控制的新手,所以我的问题是:

1)这个文件夹结构是真的吗?

路线:

2)模型和事件的文件夹结构怎么样,我应该为每个版本制作模型吗?

0 投票
0 回答
103 浏览

java - 如何使用 SPI 扩展处理与我的 Java 应用程序的版本冲突

我正在为 Java 应用程序编写插件 API,其想法是最终第三方将为应用程序提供他们自己的插件扩展,而用户需要做的就是将插件 jar 放入应用程序的插件目录中。对于不耐烦的人,简而言之,我的问题是当插件与系统上的 API 不同时,如何处理可能的版本冲突,请参阅下文了解我的情况和我的想法的详细信息。

我已经阅读了许多使用服务提供者接口的文章,并且有一些与之相关的东西。当考虑如何处理不同的版本组合时,问题就来了。

我知道在向 API 添加扩展接口时添加扩展接口而不是更改现有接口的技术(例如,具有 MyInterface 的 API 1.0、使用新方法添加 MyInterface2 的 API 1.1 等)。使用这种技术,如果用户拥有最新的 API,那么旧的插件应该可以正常工作,但是如果用户拥有旧的 API 和更新的插件会发生什么?

因此,作为一个示例,用户只有带有 MyInterface 的 API 1.0,但安装了针对 API 1.1 编译的二进制插件,其中提供程序类实现了 MyInterface2。虽然应用程序可能只使用 MyInterface 调用插件,但如果插件在内部调用 MyInterface2 会发生什么?这是否会导致错误或异常以及何时(即加载类或调用 MyInterface2 的方法时)。这个标准也是跨 JVM 的,还是可能因使用的 JVM 而异?

最后,使用插件框架会更好吗,可以检查版本要求吗?搜索互联网,我在 github 上找到了 PF4J。快速查看源代码似乎表明它可能支持某种版本检查。

0 投票
1 回答
290 浏览

rest - 有子实体的 API 版本控制

我正在将一些 API 端点迁移到更简洁的方式。但是我遇到了一些关于如何处理嵌套对象的问题。

例如:

我有一个对象Foo和一个Bar.

Foo v1.0

Foo v1.1

Bar v1.0

获取Foo版本的端点非常简单, isv1.0v1.1,但我如何处理端点Bar?对孩子的每一次更改都应该为父母“生成”一个新版本?如果父母有多个版本的孩子如何处理?如果Bar有另一个孩子Baz有两个不同的版本,版本控制Bar会随着孩子的迭代而继续吗?

如何让它直截了当,如果消费者想Foo v1.1在他的整个应用程序上使用它,他知道他Bar应该得到哪个版本?只是文档还是背后有一些模式?

0 投票
1 回答
1195 浏览

c# - Microsoft.AspNetCore.Mvc.Versioning 如何默认为“最新”版本

除了在构建新版本时更改 startup.cs 之外,

有没有办法指定“默认版本”是最新版本,而不指定该版本是什么?例如某种说法

. . . 或者这是否违背了所有被 RESTApi 诸神视为神圣的事物?

谢谢

0 投票
2 回答
169 浏览

android-studio - 如何将 Android Studio 项目 api 版本更改为 23

我使用Android Studio3.2。我创建了一个使用 api 版本 28 的项目。现在我需要将 api 版本更改为 23。所以我编辑 build.gradle:

我将“AppCompatActivity”更改为“Activity”

但构建失败:

0 投票
2 回答
2377 浏览

asp.net-core - 使用 WebAPI .Net Core 进行版本控制无法按预期工作

我正在尝试将 URL 版本控制引入我的 .Net Core WebAPI 应用程序。我还在使用 Swagger 网络工具以方便用户使用。

现在,在尝试将版本控制引入我的应用程序时,我在这里引用了文档:https ://github.com/Microsoft/aspnet-api-versioning/wiki/New-Services-Quick-Start#aspnet-core

现在,我对我的代码进行了以下代码更改:

Startup.cs/ConfigureServices 我在下面添加了代码:

现在,在添加任何类型的版本控制之前,我的控制器注释如下所示:

并生成一个如下所示的 URL:

http://localhost:12003/swagger/#!/Workspace/GetAll

现在,我在下面添加了注释以启用 api 版本控制:

. [ApiVersion("1.0")] [Produces("application/json")] [Route("api/v{version:apiVersion}/workspace")]

现在当我点击我的招摇用户界面中列出的相同方法时

网址如下所示:

http://localhost:12003/swagger/#!/controllername/ApiV_versionGetAll

虽然我所期待的是:

http://localhost:12003/swagger/#!/controllername/V1.0/GetAll

同样在我大摇大摆的情况下,它现在明确地询问我输入版本号。所以我认为我的问题归结为两个要点:

  • 如何修复我的 URL?我做错了什么?
  • 当我在控制器的注释中明确声明版本将为 1.0 时,为什么 swagger 现在要求我在 API UI 中输入版本号?
0 投票
5 回答
11661 浏览

java - REST API:多个版本,单个应用程序?

我正在开发一个 REST API,我将不得不很快引入一些重大更改,因此需要 v2。我们仍然需要同时支持 v1 几个月,以便让我们的客户有时间在他们准备好时切换到新的 API。我们的 API 是通过共享云提供的,我们所有的客户共享相同的系统后端,尤其是单个共享数据库。

我发现了很多关于 REST API 版本控制的文章,但它们更多是从客户端的角度或高级设计的角度来看的。这不是我真正关心的问题,我们的 API 已经在 URI 中进行了版本控制,因此提供具有 /v2 基本路径的服务不会有问题。

但是我问自己我将如何实际实现这一点,我还没有真正找到关于这方面的好文章。我真的不想分支我的项目的 v2,然后将 v1 和 v2 构建和部署为单独的应用程序,因为那样我将在两个应用程序中进行维护、错误修复、配置更改等,这是双重工作并且进行通常的冗余的危险(即:版本之间可能存在不一致)。此外,v2 当然在每个服务中都没有不同,所以大部分代码仍然是相同的。

是否有关于如何在向外部提供多个版本的单个应用程序中技术实现 REST API 以及共享一些代码的最佳实践(即:v2/someService 将在内部重定向到 v1/someService),以及实际差异编码在新服务中?也许甚至有框架可以帮助设计这个?如果有帮助,该应用程序将使用 Spring MVC 用 Ja​​va 编码。

我感谢有关如何解决此问题的任何提示或资源。谢谢!