带有WebAPI的Swagger UI中将出现多个版本的端点

时间:2019-09-19 09:07:27

标签: asp.net-web-api swagger-ui swashbuckle

我正在将WebAPI MVC与.net框架一起使用。我试图在控制器中显示端点的多个版本。我有一个过时的1.0和当前的1.1。在Swagger UI中,它仅显示一个划线1.0。我想在下面看到1.1。如果我叫1.0和1.1都可以。

public class FooController : BaseFundApiController<FooRequest>
{
    [Obsolete]
    [ApiVersion("1.0")]
    [Route("api/v1.0/Foo")]
    [ResponseType(typeof(FooResponse))]
    public async Task<HttpResponseMessage> FooInfo([FromBody] FooRequest FooRequest)
    {
    }

    [ApiVersion("1.1")]
    [Route("api/v1.1/Foo")]
    [ResponseType(typeof(FooResponse))]
    public async Task<HttpResponseMessage> FooInfo2([FromBody] FooRequest FooRequest)
    {
    }
}

以下是适用于webapi路由的位

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
    config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}"
    );

    var constraintResolver = new DefaultInlineConstraintResolver
    {
    ConstraintMap =
    {
        ["apiVersion"] = typeof( ApiVersionRouteConstraint )
    }
    };
    config.MapHttpAttributeRoutes(constraintResolver);
    config.AddApiVersioning();
    }
}

如何显示两种版本的端点?

1 个答案:

答案 0 :(得分:0)

弄清楚ApiVersion应该是1.0

   [ApiVersion("1.0")]
    [Route("api/v1.1/Foo")]
    [ResponseType(typeof(FooResponse))]
    public async Task<HttpResponseMessage> FooInfo2([FromBody] FooRequest FooRequest)
    {
    }
相关问题