剥夺的API应在SwaggerUI

问题描述 投票:0回答:1

FEATURE请求

today可以使用API版本和周围的大多数内容,与Swagger一起工作。我在这里真正缺少的是,对于任何Swagger UI用户来说,API的version

已被标记为已弃用。 Aspnetcore中的API贬值是描述的。 我的期望是有一个图标或标签,该标记在API组名称旁边显示“过时”或“弃用”。 在旁注:

swashbuckle swagger aspnet.core github项目问题跟踪器建议在So.

上打开功能请求。 Edit:

使用apiversion属性将整个控制器标记为弃用。如果将控制器标记为[已过时],则所有方法都是灰色的,并且文本被击中。但是,这不是我想要的。我不想标记我的代码库[过时]。我想将特定的API版本标记为弃用,以便人们知道他们应该切换到较新的版本。
[ApiVersion("1", Deprecated = true)] [Route("v{version:apiVersion}/[controller]")] [Authorize("my.auth.policy")] [ApiController] public class MyApiController { // do stuff }
我目前的解决方法是: 在我的创业公司中,我添加了Swaggerui,并在Swagger Endpoint下拉显示上进行自定义格式。

app.UseSwagger(); app.UseSwaggerUI(options => { foreach (ApiVersionDescription apiVersionDescription in apiVersionDescriptionProvider.ApiVersionDescriptions.OrderByDescending(a => a.ApiVersion)) { string isDeprecated = apiVersionDescription.IsDeprecated ? " (DEPRECATED)" : string.Empty; options.SwaggerEndpoint($"{Configuration["PathBase"]}/swagger/{apiVersionDescription.GroupName}/swagger.json", $"{apiVersionDescription.GroupName.ToUpperInvariant()}{isDeprecated}"); } });

    

@helen
定义

public class CustomHeaderFilter : IOperationFilter { public void Apply(OpenApiOperation operation, OperationFilterContext context) { if (operation.Parameters == null) operation.Parameters = new List<OpenApiParameter>(); var apiDescription = context.ApiDescription; if (apiDescription.IsDeprecated()) { operation.Deprecated = true; } } } Swagger UI API definition dropdown 使用

builder.Services.AddSwaggerGen(g => { g.OperationFilter<CustomHeaderFilter>(); }).AddSwaggerGenNewtonsoftSupport();
swagger-ui swashbuckle.aspnetcore
1个回答
0
投票
接口必须具有以下

[ApiVersion("1.0", Deprecated = true)] public class WeatherForecastController : ControllerBase

result


    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.