使用IDocumentFilter和Swashbuckle.AspNetCore.SwaggerGen包中的SwaggerDocument.Filter方法来手动过滤映射路由。代码示例如下:
using Swashbuckle.AspNetCore.SwaggerGen;
using System.Linq;
public class Filters : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
{
var ignoreRoutes = context.ApiDescriptions
.Where(x => x.ControllerAttributes()
.OfType()
.Any(y => y.IgnoreApi))
.Select(x => "/" + x.RelativePath.TrimEnd('/'))
.ToList();
foreach (var ignoreRoute in ignoreRoutes)
{
var route = swaggerDoc.Paths.Keys
.SingleOrDefault(x => x.Contains(ignoreRoute));
if (route != null)
{
swaggerDoc.Paths.Remove(route);
}
}
}
}
要在Startup.cs的ConfigureServices方法中添加以下行来注册Filter:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
c.DocumentFilter();
});
上一篇:ApiExplorerSettings(IgnoreApi=true)不能隐藏映射路由的文档说明
下一篇:Apiexpressts报错:Error[ERR_HTTP_HEADERS_SENT]:Cannotsetheadersaftertheyaresenttotheclient