问题标签 [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 版本控制支持上生成的 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 配置有代码:
php - 版本控制 PHP Lithium API
目标
我的任务是对一个相当大的 PHP Lithium API 进行版本控制。
我正在寻找的最终结果是使用命名空间来分隔版本。
例如,通常看起来像这样的锂路线:
可以有以下 URL,映射到以下 PHP 调用:
但我想创建以下映射:
这样可以进行以下两个调用:
问题
不幸的是,Lithium 文档没有太多提及 API 版本控制。这里有一个简短的提及作为延续路线的一个例子。但是这种方法需要在我的控制器中创建 if 语句来对我的 API 进行版本控制,我个人认为这是一种糟糕的方法。
TLDR
使用 PHP Lithium 框架时,实现命名空间 API 版本控制的最佳方法是什么?
c# - 带有多个端点的 Swagger 文档中的 RESTful api 版本控制和分组
我正在尝试在具有 API 端点的 MVC dotnet Core 应用程序上实现版本选项。
我追求的设置是这样的
我大部分时间都在工作,但 v1 上的项目没有出现在 v2 上。输出是这样的
这不是我所期待的
我做了一个测试,让每一个都像这样大摇大摆地显示在不同的页面上
在控制器中
在Startup.cs
并且在swagger ui doc 模板文件的index.html中有
});
为了在不同的端点上获取项目,我[ApiExplorerSettings(GroupName = "aim_v1")]
在类上使用了 并在Startup.cs和index.html文件中匹配它们。在这一点上,我不确定在哪里进行编辑以使所有[ApiVersion("1.0")]
项目都显示在 上,[ApiVersion("2.0")]
因为我认为ApiExplorerSettings GroupName是它锁定它的原因。
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 进行版本控制的方式(使用标头或其他东西)?
facebook - Facebook API 版本变更
我正在使用 Facebook API 创建受众并将数据上传到创建的受众。但是每次当 Facebook 更改 API 版本时,我的网络应用程序都会向我显示“您的广告 API 已弃用,请更改您的 API 版本”的日志。而且我只有在发生任何错误后才知道这些更改。如何自动查找 Facebook API 版本更改?或者有任何 API 可以让我每次都请求并获得新的 API 版本?
asp.net - ASP.NET Core ApiVersioning 更改中间件层次结构
我对中间件层次结构有疑问。我用一个控制器/动作创建了非常简单的 web api
如果匹配,我将路由配置为使用 Mvc,如果不匹配,则将 Default 写入响应。
这很好用,您可以在下面看到示例请求/响应:
很好,但后来我添加了 ApiVersioning,所以控制器看起来像这样:
我添加到 Startup : services.AddApiVersioning();
。它完全破坏了路由,现在对于每个请求,我都会得到响应“默认”,当我删除最后一个应用程序时。使用,路由适用于值控制器,但我没有默认中间件。你知道我如何获得与以前相同的响应,但使用 ApiVersioning 吗?
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
控制器动作:
以下是我的ConfigureServices和Configure方法startup.cs
:
当我导航到 Swagger URL 时,以下代码行失败(在 SwaggerDefaultValues.cs 类中):
当我检查description
对象的includeContactInfo
可选/查询参数时,它description.RouteInfo
是空的。
错误信息:
堆栈跟踪:
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 选择此选项的原因会有所帮助。