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的文档中是不显示的

  • 相关阅读:
    apk获取后台源代码
    Oracle用其中一个表的数据更新另一个表
    As的LogCat打开方法
    任意东西转Json
    将一个实体中相同字段的值赋值给另一个实体
    request乱码,又不能改request本身编码格式时可以进行转码
    oracle触发器
    搭建AS时各种报错解决方法(32位AMD)
    计算两个时间之间相差了多少时间
    thinkphp支持query查询
  • 原文地址:https://www.cnblogs.com/evasunny/p/10051953.html
Copyright © 2011-2022 走看看