问题标签 [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.
asp.net-core - 带有 Swagger 的版本化 API 未检测 API 操作
c# - NSwag .NET Core API 版本控制配置
我想准备我的.NET Core Web API项目,以便可以根据 REST 服务标准管理和记录 API 的多个版本。
我正在使用.NET Core 2.1和NSwag (v11.18.2)。我还安装了Microsoft.AspNetCore.Mvc.Versioning NuGet 包。
我已经用谷歌搜索了一些配置示例,但我发现唯一有用的链接是这个。
我现在可以获取两个 API 版本的 Swagger 页面,但存在一些问题:
- 请注意,最后的
config
设置(Title
、Description
等)都不会对 2 条路线中的任何一条生效。它仅在我将它们添加到每个单独的配置时才有效。所以我也想知道是否可以避免这种情况,因为 API 的一般配置可以是版本独立的(标题、描述等......)。 - 由于上面链接中讨论的 NSwag 和 Microsoft API 版本控制包的问题是在 2-3 个月前打开的(以及 NSwag 版本),我想知道它现在是否真正得到修复,在这种情况下,这是要设置的正确配置。
- 虽然版本在控制器的配置中是明确的,但它仍然是控制器方法的强制输入参数,当然我不希望这样!见图片:
因此,按照该示例,我的实际配置如下所示:
这些是我的实际控制器:
c# - 生成“Aspnet-api-versioning”时 Swagger 失败
我正在尝试使用 Microsoft 的aspnet-api-versioning让 Swagger 文档适用于我的 ASP.NET Core 应用程序,并按照此处的说明进行操作,这些说明似乎已过时,因为我必须进行更改以使其编译。
但是,每当我到达 /swagger 端点时,我都会收到以下错误“Count not render e, see console”:
我已经配置如下:
然后是一个非常简单的控制器:
因此,错误似乎缺少 Url 属性。但是我期待它来自 ASP.NET Api 版本控制?我在这里错过了什么,我需要做些什么来完成这项工作?
php - Laravel API 版本控制文件夹结构
我是 api 版本控制的新手,所以我的问题是:
1)这个文件夹结构是真的吗?
路线:
2)模型和事件的文件夹结构怎么样,我应该为每个版本制作模型吗?
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。快速查看源代码似乎表明它可能支持某种版本检查。
rest - 有子实体的 API 版本控制
我正在将一些 API 端点迁移到更简洁的方式。但是我遇到了一些关于如何处理嵌套对象的问题。
例如:
我有一个对象Foo
和一个Bar
.
Foo v1.0
Foo v1.1
Bar v1.0
获取Foo
版本的端点非常简单, isv1.0
或v1.1
,但我如何处理端点Bar
?对孩子的每一次更改都应该为父母“生成”一个新版本?如果父母有多个版本的孩子如何处理?如果Bar
有另一个孩子Baz
有两个不同的版本,版本控制Bar
会随着孩子的迭代而继续吗?
如何让它直截了当,如果消费者想Foo v1.1
在他的整个应用程序上使用它,他知道他Bar
应该得到哪个版本?只是文档还是背后有一些模式?
c# - Microsoft.AspNetCore.Mvc.Versioning 如何默认为“最新”版本
除了在构建新版本时更改 startup.cs 之外,
有没有办法指定“默认版本”是最新版本,而不指定该版本是什么?例如某种说法
. . . 或者这是否违背了所有被 RESTApi 诸神视为神圣的事物?
谢谢
android-studio - 如何将 Android Studio 项目 api 版本更改为 23
我使用Android Studio3.2。我创建了一个使用 api 版本 28 的项目。现在我需要将 api 版本更改为 23。所以我编辑 build.gradle:
我将“AppCompatActivity”更改为“Activity”
但构建失败:
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 中输入版本号?
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 用 Java 编码。
我感谢有关如何解决此问题的任何提示或资源。谢谢!