问题标签 [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 - API 版本控制和重用版本更新的现有实现
我们使用aspnet-api-version作为我们 API 的版本。虽然该库允许在一个控制器上交错实现多个版本。
我们希望将特定于版本的控制器分开。
我看到的版本特定控制器和使用这个库的问题是,我们必须再次重新实现所有 API 方法,无论它们是否已更改。考虑这个例子
V1 api(使用ValuesController
)定义了两个 API 函数Get
和Get(ById)
. 但是 v2 apiValuesControllerV2
在覆盖Get(ById)
时,它必须重新实现或调用基本方法Get
以使Get
API 在 V2 上可用。
有没有更好的策略,我们不必为所有在 API 升级时保持不变的函数重新实现或编写传递。
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?
php - 为每个版本的 API 使用单独的目录
我打算用 Laravel 框架创建一个 API。如果我继续开发它,可能会有多个版本的 API,例如:、、、v1
等等。v2
v3
而不是只有一个 Laravel 框架副本并通过为每个版本创建不同的目录来对其中的 API 进行版本控制,我正在考虑为每个版本的 API 创建一个完全独立的 Laravel 框架副本。
例如,假设这是 API 的 URL: website.com/api
,我正在考虑v1
在该目录中创建一个名为的api
目录,并将 Laravel 的完整副本放入其中。稍后当我需要创建新版本的 API 时,我会创建另一个名为v2
beside的新目录,v1
并在其中放置一个新的完整且独立的 Laravel 副本,依此类推。
这样,当我想访问 API 的版本 1 时,我将访问这个 URL:website.com/api/v1
而当我想访问版本 2 时,我将访问website.com/api/v2
.
我的问题:这是一个坏主意吗?这种方法的缺点是什么?
编辑:
为什么我会想到这种方法?
因为我想到了以下几点:
- 如果有一天我想用 Laravel 以外的 PHP 框架创建 API 的新版本,该怎么办?
- 如果有一天我想用 PHP 以外的编程语言创建 API 的新版本,该怎么办?
- 如果有一天我想升级到更新版本的 Laravel,并且该版本对最初创建 API 的版本有重大更改,该怎么办。
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。
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
laravel - Laravel 5.3 API 版本控制
我正在尝试为我正在处理的 API 设置 api 版本,我发现这篇文章解释了如何使用中间件并替换路由本身中的字符串。基本上指定这样的路线。
但是,当我尝试这样做时,出现以下错误
在运行执行替换的中间件之前,容器似乎正在验证路由控制器文件的存在。我已将中间件添加到$routeMiddleware
Http Kernel 文件中。
在检查文件是否存在之前,我怎样才能做到这一点?
我考虑过将它添加到应用程序全局中间件,但我不希望它只在 api 调用时在 web 上运行
c# - 多个动作匹配。以下操作匹配路线数据并满足所有约束
我正在尝试设计 API 版本控制,但出现以下错误
多个动作匹配。以下操作匹配路线数据并满足所有约束
我不想复制所有控制器方法,而是只覆盖任何已更改但未更改的内容导致错误。这是我正在尝试的不好的做法吗?我的问题有什么解决方案吗?
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 类中自定义默认错误响应。有人可以为我提供任何示例,以便我可以开始使用吗?
提前致谢!
asp.net-web-api - 需要 API 版本,但未指定。网页API
结果:
两个 URL 都与 v1 版本 ROUTE 一起使用。
第二个 URL 也适用于 v1 和直接没有 v1 路由,即 [Route("~/api/gerDetail/getDetail")]
问题:第一个 URL 仅适用于 v1,它不适用于像“[Route("~/api/ger/getDetail")]”这样的直接路由,并出现如下错误:
"Error": { "Code": "ApiVersionUnspecified", "Message": "需要 API 版本,但未指定。" }
如何解决这个问题?当我从 2.05 更改为 1.0 时,它可以工作,但 2.0 或 2.05 都不起作用。是否需要单独的文件夹?