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);
    		}
    	}
    }
    
  • 相关阅读:
    Html5 冒泡排序演示
    Html5 Json应用
    Html5 和 CSS的简单应用
    Html5 布局方式
    Html5 绘制五星红旗
    Html5 绘制旋转的太极图
    Html5绘制时钟
    Html5 实现灯笼绘制
    "电量信息"组件:<battery> —— 快应用组件库H-UI
    "系统音量"组件:<volume> —— 快应用组件库H-UI
  • 原文地址:https://www.cnblogs.com/kellynic/p/6092879.html
Copyright © 2011-2022 走看看