zoukankan      html  css  js  c++  java
  • 使用Swagger处理Api的显示与隐藏

    一、在SwaggerConfig.cs中配置如下:

    c.DocumentFilter<ShowApiFilter>();
    c.DocumentFilter<HideApiFilter>();

    二、新建类,分别处理Show与Hide

    public class ShowApiAttribute : Attribute { }
    public class ShowApiFilter : IDocumentFilter
    {
    	public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
    	{
    		foreach (ApiDescription apiDescription in apiExplorer.ApiDescriptions)
    		{
    			if (!Enumerable.OfType<ShowApiAttribute>(apiDescription.GetControllerAndActionAttributes<ShowApiAttribute>()).Any())
    			{
    				string key = "/" + apiDescription.RelativePath;
    				if (key.Contains("?"))
    				{
    					int idx = key.IndexOf("?", StringComparison.Ordinal);
    					key = key.Substring(0, idx);
    				}
    				swaggerDoc.paths.Remove(key);
    			}
    		}
    	}
    }
    

      

    public class HideApiAttribute : Attribute { }
    public class HideApiFilter : IDocumentFilter
    {
    	public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
    	{
    		foreach (ApiDescription apiDescription in apiExplorer.ApiDescriptions)
    		{
    			if (Enumerable.OfType<HideApiAttribute>(apiDescription.GetControllerAndActionAttributes<HideApiAttribute>()).Any())
    			{
    				string key = "/" + apiDescription.RelativePath;
    				if (key.Contains("?"))
    				{
    					int idx = key.IndexOf("?", StringComparison.Ordinal);
    					key = key.Substring(0, idx);
    				}
    				swaggerDoc.paths.Remove(key);
    			}
    		}
    	}
    }
    

    三、在使用时,直接在Controller上或Action上加上相应的特性即可,注意,如果上面的代码都放在了项目中,即把显示与隐藏都配置到了Swagger中,则在不加特性时,Swagger的文档中是不显示的

  • 相关阅读:
    ESP8266 STA TCP 客户端配置并连接通信
    Modbus CRC16 校验计算函数
    自写简易版从机Modbus
    STM32CubeIDE查看内存使用情况
    WPF 样式Style
    WPF选项卡页面分离之Page调用Window类
    WPF 多个选项卡TabControl 页面分离
    STM32Cube IDE 汉字字体变小解决办法
    浮点数double相等性比较
    Ling应用
  • 原文地址:https://www.cnblogs.com/evasunny/p/10051953.html
Copyright © 2011-2022 走看看