Swashbuckle - 重复的路线,奇怪的行为

时间:2016-12-15 23:31:56

标签: c# asp.net-web-api swagger-2.0 swashbuckle

我有一个WebApi,我需要多租户路由版本。使用路由前缀可以轻松完成此操作。路线v1& v2都具有控制器A,B,C,并且v2中的控制器C具有不同的实现。这种设计是为了打破尽可能少的消费者。

Swashbuckle似乎对这种配置表现得很奇怪。如果我不包含以下代码,则会出现错误 - 由于swagger spec冲突:

c.MultipleApiVersions(apiDesc, version) =>
{
    controllers.Add(apiDesc);
    var controllerNamespace = apiDesc.ActionDescriptor.ControllerDescriptor.ControllerType.FullName;

    if (controllerNamespace.ToLowerInvariant().Contains(version.ToLowerInvariant()))
    {
        return true;
    }
    return false;
},
(vc) =>
        {
            vc.Version("v1", "Quantium.Retail.Hierarchy.Services API v2");
            vc.Version("v2", "Quantium.Retail.Hierarchy.Services API v1");
        });

这很好,并且有意义,但是只有版本1被传递到版本lamba,所以v1缺少2个控制器 - 除了路由之外,两个代码没有改变。文档中唯一的控制器是已经重新设计的控制器,它具有稍微不同的查询字符串和实现。

这似乎是一个非常普遍的要求。我需要两组重复的路由,按版本分隔(所以在v1控制器声明上等[Route("v1/admin"]等。当然它是支持的吗?

在任一控制器上更改操作方法的路径都会给出正确的行为 - 两个路径都显示在每个版本的doc上。就像Swashbuckle只考虑行动方法路线一样。

0 个答案:

没有答案