使用 Header 的 Web Api 版本控制,我们如何使用 Net Framework MVC Api 在 Swagger UI 上使用它
Posted
技术标签:
【中文标题】使用 Header 的 Web Api 版本控制,我们如何使用 Net Framework MVC Api 在 Swagger UI 上使用它【英文标题】:Web Api Versioning using Header , How can we use it on Swagger UI using Net Framework MVC Api 【发布时间】:2020-10-15 08:17:36 【问题描述】:您好,我一直在我的 API 中使用标头版本控制方法,下面是链接。 我现在的问题是我似乎无法在 SwaggerConfig.cs 中使用 Swagger
我将向您展示多版本控制中的代码,但它不起作用。这是多版本控制的一部分
public class SwaggerConfig
public static void Register()
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration
.EnableSwagger(c =>
c.MultipleApiVersions(
(apiDesc, targetApiVersion) => targetApiVersion.Equals("V1", StringComparison.InvariantCultureIgnoreCase) || // Include everything by default
apiDesc.Route.RouteTemplate.StartsWith(targetApiVersion, StringComparison.InvariantCultureIgnoreCase), // Only include matching routes for other versions
(vc) =>
vc.Version("V1", "Real Time API V1");
vc.Version("V2", "Real Time API V2");
); ) .EnableSwaggerUi(c =>
c.EnableDiscoveryUrlSelector(););
https://seroter.com/2012/09/25/versioning-asp-net-web-api-services-using-http-headers/
标头 APi 正在使用具有相同 api 路由的不同控制器.. 所以我的版本控制都是基于控制器名称的..有人可以帮助我..谢谢
【问题讨论】:
【参考方案1】:这可以通过ASP.NET API Versioning 以一种非常简单直接的方式实现。您可以通过任何您想要的方法轻松地进行版本控制,包括通过标题。要与 OpenAPI/Swagger 生成器(例如 Swashbuckle)集成,您只需添加可识别 API 版本的 API Explorer 扩展。您可以查看端到端的Web API example here。
免责声明:我是所有者和作者
您所展示的方法似乎是我不熟悉的某种替代形式的版本控制。我可以根据经验说,当您按标题进行版本化并且事情是跨域的时,Try It! 功能可能会很棘手。这与 CORS 的工作方式有关。浏览器将不在预检中发送自定义标头,其中包括 API 版本标头。为了解决这个问题,我相信在 Swagger UI/javascript 中有一个钩子,您可以在发出 CORS 请求之前手动注入标头。
【讨论】:
以上是关于使用 Header 的 Web Api 版本控制,我们如何使用 Net Framework MVC Api 在 Swagger UI 上使用它的主要内容,如果未能解决你的问题,请参考以下文章
Java Web学习总结(43)—— Restful API 版本控制