• 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);
    		}
    	}
    }
    
  • 相关阅读:
    Codeforces Round #562题解
    Codeforces Round #561题解
    CF1107E Vasya and Binary String(区间dp)
    NC110113 Summer Earnings(bitset)
    NC112798 XOR-pyramid(dp)
    NC23051 华华和月月种树(离线+树状数组)
    py.path模块
    stat模块
    pwd模块
    PrettyTable模块
  • 原文地址:https://www.cnblogs.com/kellynic/p/6092879.html
Copyright © 2020-2023  润新知