使用 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 上使用它的主要内容,如果未能解决你的问题,请参考以下文章

带有继承的 Web API 版本控制

Web-API 版本控制不适用于默认版本

Java Web学习总结(43)—— Restful API 版本控制

Java Web学习总结(43)—— Restful API 版本控制

Service Fabric Web API 版本控制问题

web api 多版本控制重要的两个类