首页 文章

利用属性版本控制在Swagger中利用MultipleApiVersions

提问于
浏览
8

使用属性路由时,是否可以在Swagger UI / Swashbuckle中利用MultipleApiVersions?

具体来说,我实现了版本控制:

using System.Web.Http;

namespace RESTServices.Controllers.v1
{
    [Route("api/v1/Test")]
    public class TestV1Controller : ApiController
    { ... }

版本2将位于v2名称空间中 . 在名为TestV2Controller的控制器中 . 路线中有v2 .

是否可以传递一个lambda,这将允许这个?我在网上发现了一个编译的lambda样本,但随后Swagger完全停止了工作 . 无法在浏览器中点击断点或看到Swagger .

1 回答

  • 18
    .EnableSwagger(c => c.MultipleApiVersions(
            (apiDesc, version) =>
            {
                var path = apiDesc.RelativePath.Split('/');
                var pathVersion = path[1];
    
                return CultureInfo.InvariantCulture.CompareInfo.IndexOf(pathVersion, version, CompareOptions.IgnoreCase) >= 0;
            },
            vc =>
            {
                vc.Version("v2", "Swashbuckle Dummy API V2"); //add this line when v2 is released
    
                // ReSharper disable once ConvertToLambdaExpression
                vc.Version("v1", "Swashbuckle Dummy API V1");
            }
            ))
    

相关问题