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);
    		}
    	}
    }
    
  • 相关阅读:
    替代传统C/S和B/S技术的下一代客户/服务器编程技术
    理想的编程语言
    nginx进程模型
    Sybase 7.0 中文乱码问题
    netfilter 链接跟踪机制与NAT原理
    TraTraffic Server 进程模型
    nginx并发模型与traffic_server并发模型简单比较
    vs/nat原理分析
    ORACLE 查询表信息
    in 跟exists的区别
  • 原文地址:https://www.cnblogs.com/kellynic/p/6092879.html
Copyright © 2011-2022 走看看