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

asp.net - 在单个控制器上的 api 版本控制支持上生成的 Swagger Docs 的问题

我有两个由 Swashbuckle 生成的 Swagger 文档,即 docs/v1 和 docs/v2。但是 docs/v2 没有提供有关 GetV2() 操作的信息。如果 Swashbuckle 可以选择解决此问题,请提供帮助。

1. 由于动作 get() 和 getv2() 的路由模板似乎相同,因此 docs v2 没有显示有关 getV2() 的任何信息。

2. Swagger 定义看起来不像 v1.0/get 而在 docs/v1 中显示为 v{version}/get

注意:我参考了 apiversioning 示例,但不确定我缺少什么。当我使用 Swashbuckle 时,所有示例都参考 Swashbuckle.core。

这是我的控制器,包括两个操作,一个用于 v1 版本,一个用于 v2。下面是路由约束的 webapi.config:

我的 Swagger 配置有代码:

0 投票
1 回答
103 浏览

php - 版本控制 PHP Lithium API

目标

我的任务是对一个相当大的 PHP Lithium API 进行版本控制。

我正在寻找的最终结果是使用命名空间来分隔版本。

例如,通常看起来像这样的锂路线:

可以有以下 URL,映射到以下 PHP 调用:

但我想创建以下映射:

这样可以进行以下两个调用:


问题

不幸的是,Lithium 文档没有太多提及 API 版本控制。这里有一个简短的提及作为延续路线的一个例子。但是这种方法需要在我的控制器中创建 if 语句来对我的 API 进行版本控制,我个人认为这是一种糟糕的方法。


TLDR

使用 PHP Lithium 框架时,实现命名空间 API 版本控制的最佳方法是什么?

0 投票
2 回答
3209 浏览

c# - 带有多个端点的 Swagger 文档中的 RESTful api 版本控制和分组

我正在尝试在具有 API 端点的 MVC dotnet Core 应用程序上实现版本选项。

我追求的设置是这样的

我大部分时间都在工作,但 v1 上的项目没有出现在 v2 上。输出是这样的

在此处输入图像描述 在此处输入图像描述

但是当我们到达AiM v2端点上的版本 2 时,我只有一项 在此处输入图像描述

这不是我所期待的

我做了一个测试,让每一个都像这样大摇大摆地显示在不同的页面上

控制器中

Startup.cs

并且在swagger ui doc 模板文件的index.html中有

});

为了在不同的端点上获取项目,我[ApiExplorerSettings(GroupName = "aim_v1")]在类上使用了 并在Startup.csindex.html文件中匹配它们。在这一点上,我不确定在哪里进行编辑以使所有[ApiVersion("1.0")]项目都显示在 上,[ApiVersion("2.0")]因为我认为ApiExplorerSettings GroupName是它锁定它的原因。

0 投票
2 回答
1739 浏览

rest - 使用 HATEOAS 对耦合的 RESTful API 进行版本控制

我们可以ProductsAPI浏览我们网站上可用的产品,这些产品由我们的移动应用程序(Android 和 iOS)使用。以下是基本设计:

在这里,detailsUrl包含ProductDetails页面的 API URL。

现在,我们需要在新版本的应用程序中对 API 的响应进行一些更改,ProductDetails并需要对其进行版本化。URL 将更改为 - /api/v2/products/{id}(我们通过 URL 使用 API 版本控制)。

由于我们不希望以前版本的应用程序中的新响应,我们需要创建一个新版本的ProductsAPI也将发送新ProductDetailsAPI的 url 作为响应。

API 以这种方式耦合。如果我们更改任何子 API 的版本,父 API 版本也需要更改。处理此问题的推荐方法是什么?我们是否应该改变对 API 进行版本控制的方式(使用标头或其他东西)?

0 投票
1 回答
78 浏览

facebook - Facebook API 版本变更

我正在使用 Facebook API 创建受众并将数据上传到创建的受众。但是每次当 Facebook 更改 API 版本时,我的网络应用程序都会向我显示“您的广告 API 已弃用,请更改您的 API 版本”的日志。而且我只有在发生任何错误后才知道这些更改。如何自动查找 Facebook API 版本更改?或者有任何 API 可以让我每次都请求并获得新的 API 版本?

0 投票
1 回答
371 浏览

asp.net - ASP.NET Core ApiVersioning 更改中间件层次结构

我对中间件层次结构有疑问。我用一个控制器/动作创建了非常简单的 web api

如果匹配,我将路由配置为使用 Mvc,如果不匹配,则将 Default 写入响应。

这很好用,您可以在下面看到示例请求/响应:

很好,但后来我添加了 ApiVersioning,所以控制器看起来像这样:

我添加到 Startup : services.AddApiVersioning();。它完全破坏了路由,现在对于每个请求,我都会得到响应“默认”,当我删除最后一个应用程序时。使用,路由适用于值控制器,但我没有默认中间件。你知道我如何获得与以前相同的响应,但使用 ApiVersioning 吗?

0 投票
1 回答
13390 浏览

c# - ASP.net Web API 版本控制

我有 ASP.net Web Api 项目,我决定是时候支持版本控制了。我正在使用官方的 Microsoft Nuget 来支持版本控制(更多信息在这里),我决定按命名空间进行版本控制(如这里示例)。

不幸的是,我无法让代码工作。如果我这样调用我的方法:

我得到错误:

如果我这样称呼它:http://localhost:7291/v2/Saved/GetNumberOfSavedWorkoutsForUser

我收到错误 404:

我不确定我做错了什么。这是我的代码:

启动.cs

保存的控制器 (v1)

保存的控制器 (v2)

0 投票
1 回答
863 浏览

c# - ASP.NET WebApi 版本控制不起作用

我正在尝试按照本教程实现 api 版本控制。所以在我的创业中,我有:

和我的控制器:

当我请求http://localhost/api/v1.0/my时出现错误

您能否建议如何使控制器版本控制工作?

0 投票
1 回答
1940 浏览

c# - 可选参数导致 Swashbuckle.AspNetCore 中出现空异常

我有一个asp.net core 2.0带有可选(和可为空)参数的 api 控制器操作。Swashbuckle.AspNetCore 1.0.0当方法签名中存在此参数时,Swagger 文档的生成失败,但如果我将其从签名中删除,则会成功。看来可选参数是错误的原因,但我不知道为什么......

我正在使用与 aspnet-api-versioning 的 Swashbuckle 集成: https ://github.com/Microsoft/aspnet-api-versioning/wiki/Swashbuckle-Integration

控制器动作

以下是我的ConfigureServicesConfigure方法startup.cs

我也在使用来自 https://github.com/Microsoft/aspnet-api-versioning/wiki/Swashbuckle-Integration#aspnet-core的 SwaggerDefaultValues.cs 类

当我导航到 Swagger URL 时,以下代码行失败(在 SwaggerDefaultValues.cs 类中):

当我检查description对象的includeContactInfo可选/查询参数时,它description.RouteInfo是空的。

错误信息:

堆栈跟踪:

0 投票
1 回答
609 浏览

rest - azure api 版本控制 x-ms-version api-version 比较

我看到在 Azure 中公开的 Microsft 托管 REST API 中,有两种方法可以进行版本控制 a) 标头中的 x-ms-version b) 查询字符串中的 api-version

我想了解两者之间的选择背后的决定是什么。我在某处读到 x-ms-versioning 是遗留的,前进的方向是查询字符串版本控制模式。这个对吗?

同样根据Scot Hanselman 的博客,他说查询字符串参数不是他的首选方式,他会选择 URL 路径段。然后想知道为什么微软采用了这个选项?我同意每个人都有自己的偏好,但了解 Microsoft 选择此选项的原因会有所帮助。