微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Header进行Web Api版本控制,如何使用Net Framework MVC Api在Swagger UI上使用它

如何解决使用Header进行Web Api版本控制,如何使用Net Framework MVC Api在Swagger UI上使用它

嗨,我一直在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正在与具有SAME api路由的其他控制器一起使用。 所以我的版本控制完全基于控制器名称。.有人可以帮我吗..谢谢

解决方法

ASP.NET API Versioning可以非常简单直接地实现。您可以通过所需的任何方法轻松地进行版本控制,包括标头。要与Swashbuckle之类的OpenAPI / Swagger生成器集成,您只需添加支持API版本的API Explorer扩展。您可以查看端对端Web API example here

免责声明:我是所有者和作者

您显示的方法似乎是我不熟悉的某种替代版本控制。我可以凭经验说 Try It!功能在按标头进行版本控制并且是跨域的时可能会很棘手。这与CORS的工作方式有关。浏览器将在预检中发送自定义标头,其中包括API版本标头。为了解决这个问题,我相信 Swagger UI / JavaScript中有一个钩子,您可以在提出CORS请求之前手动注入标头。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。