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

attributes - 利用属性版本控制在Swagger中利用MultipleApiVersions,第1张

使用属性路由时,是否可以在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。

最佳答案:

2 个答案:

答案 0 :(得分: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");
        }
        ))

答案 1 :(得分:0)

Swagger支持多个版本。 配置URL,以便Swagger可以正确指定版本。

httpConfiguration
.EnableSwagger(c =>
    {
        c.MultipleApiVersions(
            (apiDesc, targetApiVersion) => ResolveVersionSupportByRouteConstraint(apiDesc, targetApiVersion),
            (vc) =>
            {
                vc.Version("v2", "Swashbuckle Dummy API V2");
                vc.Version("v1", "Swashbuckle Dummy API V1");
            });
    });
.EnableSwaggerUi(c =>
    {
        c.EnableDiscoveryUrlSelector();
    });

参考文献:

  • https:https://github.com/domaindrivendev/Swashbuckle#describing-multiple-api-versions
本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复