问题标签 [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 回答
516 浏览

asp.net - API 版本控制和重用版本更新的现有实现

我们使用aspnet-api-version作为我们 API 的版本。虽然该库允许在一个控制器上交错实现多个版本。

我们希望将特定于版本的控制器分开。

我看到的版本特定控制器和使用这个库的问题是,我们必须再次重新实现所有 API 方法,无论它们是否已更改。考虑这个例子

V1 api(使用ValuesController)定义了两个 API 函数GetGet(ById). 但是 v2 apiValuesControllerV2在覆盖Get(ById)时,它必须重新实现或调用基本方法Get以使GetAPI 在 V2 上可用。

有没有更好的策略,我们不必为所有在 API 升级时保持不变的函数重新实现或编写传递。

0 投票
1 回答
190 浏览

api - Which to use or two set of results on Azure APIVersion

Scenario: To List WebApps under a resourcegroup name.

Attempt Approach :

Output

Find-AzureRmResource : InvalidApiVersionParameter : The api-version '2015-08-01' is invalid. The supported versions are '2017-08-01,2 017-06-01,2017-05-10,2017-05-01,2017-03-01,2016-09-01,2016-07-01,2016-06-01,2016-02-01,2015-11-01,2015-01-01,2014-04-01-preview,2014- 04-01,2014-01-01,2013-03-01,2014-02-26,2014-04'. At line:24 char:5 + Find-AzureRmResource -ResourceGroupName $ResourceGroupName -Resou ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : CloseError: (:) [Find-AzureRmResource], ErrorResponseMessageException + FullyQualifiedErrorId : InvalidApiVersionParameter,Microsoft.Azure.Commands.ResourceMan

So, I picked 2017-08-01 from the listed error output for my webapiversion parameter and re-attempted, strangely it works listing the webapps created today or I assume at this point could list any app setup post 2017-08-01 ONLY.

Question 1: Does this mean, I would have to pull out available -apiversion and iterate through them to build entire webapp list under a resource group?

Attempted to see -apiversion but the output appears not complete or not matching with error thrown above as in Output block.

Snippet used to list the API Version:

Output

2016-08-01

2016-03-01

2015-08-01-preview

2015-08-01

2015-07-01

2015-06-01

2015-05-01

2015-04-01

2015-02-01

2014-11-01

2014-06-01

2014-04-01-preview

2014-04-01

The above result is on successful execution of apiversion listing snippet.

Question 2: Why is the apiversion listing above not showing the api-versions list as shown in the error output of initial attempt approach?

0 投票
6 回答
3437 浏览

php - 为每个版本的 API 使用单独的目录

我打算用 Laravel 框架创建一个 API。如果我继续开发它,可能会有多个版本的 API,例如:、、、v1等等。v2v3

而不是只有一个 Laravel 框架副本并通过为每个版本创建不同的目录来对其中的 API 进行版本控制,我正在考虑为每个版本的 API 创建一个完全独立的 Laravel 框架副本。

例如,假设这是 API 的 URL: website.com/api,我正在考虑v1在该目录中创建一个名为的api目录,并将 Laravel 的完整副本放入其中。稍后当我需要创建新版本的 API 时,我会创建另一个名为v2beside的新目录,v1并在其中放置一个新的完整且独立的 Laravel 副本,依此类推。

这样,当我想访问 API 的版本 1 时,我将访问这个 URL:website.com/api/v1而当我想访问版本 2 时,我将访问website.com/api/v2.

我的问题:这是一个坏主意吗?这种方法的缺点是什么?


编辑:

为什么我会想到这种方法?

因为我想到了以下几点:

  • 如果有一天我想用 Laravel 以外的 PHP 框架创建 API 的新版本,该怎么办?
  • 如果有一天我想用 PHP 以外的编程语言创建 API 的新版本,该怎么办?
  • 如果有一天我想升级到更新版本的 Laravel,并且该版本对最初创建 API 的版本有重大更改,该怎么办。
0 投票
1 回答
586 浏览

java - Websphere Application Server 中的上下文路径中的双斜杠

我想知道在将 WAR 部署到 Websphere Application Server: 时是否可以放置这样的上下文路径/api/v3.1,以及另一个具有相同上下文路径但要在同一个 WAS 中启动的 API 的另一个版本。

在我的团队中,我们想要对向客户端公开的 API 进行版本控制,我们有一个使用 Spring Boot 创建的单体应用程序,该应用程序部署到 WAS v8.5 中。

为此,我们想到了将版本放在 URI 中的 API 版本控制方法: https://example.com/api/v2.1 https://example.com/api/v3.0 看起来它部署正确,但是在使用时它说没有文件映射到这些 URI。

0 投票
1 回答
825 浏览

php - Cake - Setup routing to support versioned API controllers?

I want to be able to support multiple versioned endpoints from my api simultaneously, such as:

But in trying to implement the routing for this, a bit perplexed as to how Cake wants this as I keep getting a

Error: Controller class Counties could not be found.

Attempt 1:

Attempt 2:

The directory structure I'm currently using (which is still open for debate):

src/Controller/Api/V1.1, which would use base controllers from src/Controller/Api and extend them with stub methods to override if needed. Most of my "fat" is in the models.

and src/Controller/Api/V1.1/CountiesController.php has:

Would appreciate any insight

0 投票
3 回答
1734 浏览

laravel - Laravel 5.3 API 版本控制

我正在尝试为我正在处理的 API 设置 api 版本,我发现这篇文章解释了如何使用中间件并替换路由本身中的字符串。基本上指定这样的路线。

但是,当我尝试这样做时,出现以下错误

在运行执行替换的中间件之前,容器似乎正在验证路由控制器文件的存在。我已将中间件添加到$routeMiddlewareHttp Kernel 文件中。

在检查文件是否存在之前,我怎样才能做到这一点?

我考虑过将它添加到应用程序全局中间件,但我不希望它只在 api 调用时在 web 上运行

0 投票
1 回答
1560 浏览

c# - 多个动作匹配。以下操作匹配路线数据并满足所有约束

我正在尝试设计 API 版本控制,但出现以下错误

多个动作匹配。以下操作匹配路线数据并满足所有约束

我不想复制所有控制器方法,而是只覆盖任何已更改但未更改的内容导致错误。这是我正在尝试的不好的做法吗?我的问题有什么解决方案吗?

0 投票
2 回答
2176 浏览

c# - 针对 webapi dotnet core 中的 ApiVersioning 错误的自定义错误响应

我正在为 Webapi 服务中的所有错误创建一个包库。该库将用于为 BadRequest、BadArgument、ApiVersionsing 等相关错误提供自定义响应。我需要帮助自定义与 ApiVersion 相关的错误 - ApiVersionUnspecified、UnsupportedApiVersion、InvalidApiVersion、AmbiguousApiVersion。我已按照本文为我的项目包含 api-versioning - https://www.hanselman.com/blog/ASPNETCoreRESTfulWebAPIVersioningMadeEasy.aspx

我已经检查了上述包的 github wiki,发现“根据所需的行为,您可以扩展 DefaultErrorResponseProvider 或者您可以从 stratch 实现自己的 IErrorResponseProvider。

要连接备用错误响应行为,请将默认提供程序替换为您自己的:"

然而; 我不太明白如何在 MyErrorResponseProvider 类中自定义默认错误响应。有人可以为我提供任何示例,以便我可以开始使用吗?

提前致谢!

0 投票
2 回答
871 浏览

c# - 路由参数的 XML 注释

我正在实现一个 Web API 项目,该项目将使用标准的 HelpPages 区域来获取文档。我在我的项目中使用属性路由并实现了 ApiVersioning。我已经记录了我的大部分方法和模型,但是我试图弄清楚如何记录 API 版本路由参数。这是我的控制器的示例:

配置 HelpArea 并运行项目后,我得到以下帮助信息:

在此处输入图像描述

version 参数有一个描述,但是我不知道如何记录它。就方法而言,它不是路线的一部分,因此尝试<param name="version">...是徒劳的。

谢谢你的帮助!

0 投票
2 回答
10748 浏览

asp.net-web-api - 需要 API 版本,但未指定。网页API

结果:

  1. 两个 URL 都与 v1 版本 ROUTE 一起使用。

  2. 第二个 URL 也适用于 v1 和直接没有 v1 路由,即 [Route("~/api/gerDetail/getDetail")]

  3. 问题:第一个 URL 仅适用于 v1,它不适用于像“[Route("~/api/ger/getDetail")]”这样的直接路由,并出现如下错误:

    "Error": { "Code": "ApiVersionUnspecified", "Message": "需要 API 版本,但未指定。" }

如何解决这个问题?当我从 2.05 更改为 1.0 时,它可以工作,但 2.0 或 2.05 都不起作用。是否需要单独的文件夹?