Swagger 增加 DocumentFilter 隐藏不需要显示的接口
Posted FreeSql & CSRedis
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swagger 增加 DocumentFilter 隐藏不需要显示的接口相关的知识,希望对你有一定的参考价值。
services.ConfigureSwaggerGen(options => { options.SingleApiVersion(new Info { Version = "v1", Title = "xxx API", Description = "xxx 项目webapi接口说明", TermsOfService = "None", Contact = new Contact { Name = "xxx", Email = "", Url = "http://xxx.com" }, License = new License { Name = "xxx", Url = "http://xxx.com" } }); options.IncludeXmlComments(AppContext.BaseDirectory + @"/Admin.xml"); // 这个需要开启项目生成 xml 选项 options.DocumentFilter<HiddenApiFilter>(); // 在接口类、方法标记属性 [HiddenApi],可以阻止【Swagger文档】生成 });
HiddenApiFilter.cs 代码实现部分
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] public partial class HiddenApiAttribute : Attribute { } public class HiddenApiFilter : IDocumentFilter { public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context) { foreach (ApiDescription apiDescription in context.ApiDescriptionsGroups.Items.SelectMany(e => e.Items)) { if (apiDescription.GetControllerAttributes().OfType<HiddenApiAttribute>().Count() == 0 && apiDescription.GetActionAttributes().OfType<HiddenApiAttribute>().Count() == 0) continue; var key = "/" + apiDescription.RelativePath.TrimEnd(‘/‘); if (!key.Contains("/test/") && swaggerDoc.Paths.ContainsKey(key)) swaggerDoc.Paths.Remove(key); } } }
以上是关于Swagger 增加 DocumentFilter 隐藏不需要显示的接口的主要内容,如果未能解决你的问题,请参考以下文章
(转) 增加 header 参数,spring boot + swagger2(springfox)
Swagger ui在zuul后面的时候在测试页面增加了一个/path