0

嗨,我一直在我的 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/

Header APi 正在使用具有相同 api 路由的不同控制器..所以我的版本控制都是基于控制器名称..有人可以帮助我..谢谢

4

1 回答 1

0

这可以通过ASP.NET API 版本控制以非常简单直接的方式实现。您可以通过任何您想要的方法轻松地进行版本控制,包括通过标题。要与 OpenAPI/Swagger 生成器(例如 Swashbuckle)集成,您只需添加可识别 API 版本的 API Explorer 扩展。您可以在此处查看端到端Web API 示例

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

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

于 2020-10-28T21:28:19.053 回答