因为场景需要,要把某些特定的api过滤掉,不允许显示在swaggerui里,
具体操作步骤: 分为三步
步骤1: 创建Attribute
1 /// <summary> 2 /// ignore some api on swagger.json 3 /// </summary> 4 [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] 5 public class SwaggerIgnoreAttribute : Attribute 6 { 7 8 }
步骤2:创建IDocumentFilter的实现类XXXFileter
/// <summary> /// 过滤具备SwaggerIgnore特性的api /// </summary> public class SwaggerIgnoreFilter : IDocumentFilter { public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context) { var ignoreApis = context.ApiDescriptions.Where(wh => wh.ActionAttributes().Any(any => any is SwaggerIgnoreAttribute)); if (ignoreApis != null) { foreach (var ignoreApi in ignoreApis) { swaggerDoc.Paths.Remove("/" + ignoreApi.RelativePath); } } } }
步骤3:StartUp类中 Swagger的Config中使用过滤器
services.AddSwaggerGen( options => { options.DocumentFilter<SwaggerIgnoreFilter>(); });