zoukankan      html  css  js  c++  java
  • 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);
    		}
    	}
    }
    
  • 相关阅读:
    再谈Asp.Net页面生命周期
    多线程、方便扩展的Windows服务程序框架
    用NuGet.Server管好自家的包包
    github for Windows
    MongoVUE 15天试用期解决办法
    NET插件系统——提升系统搜索插件和启动速度的思考
    Visual Studio Ultimate 2012 RC 安装手记
    自动完成菜单
    HBase
    WCF消息可靠性于有序传递
  • 原文地址:https://www.cnblogs.com/kellynic/p/6092879.html
Copyright © 2011-2022 走看看