接口 Swagger 部分Web API的隱藏


原文:https://www.cnblogs.com/wyt007/p/10650974.html
原文:https://www.bbsmax.com/A/VGzloMNxdb/


一、前言


背景

有的api文檔不想顯示出來,比如在基類BaseApiController中有一些公用的方法(原因先不管哈)
百度了一下,找到了幾篇都是asp.net core的,然后就照着他們的自己稍微改了一下

環境:

  • .NET Framework 4.6.1
  • Swashbuckle 5.6.0



二、具體操作步驟


1、添加特性,隱藏swagger接口特性標識

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class HiddenApiAttribute : Attribute {}

2、添加過濾器,自定義Swagger隱藏過濾器

public class HiddenApiFilter : IDocumentFilter
{      
    void IDocumentFilter.Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
    {
        foreach (ApiDescription apiDescription in apiExplorer.ApiDescriptions)
        {

            if (apiDescription.GetControllerAndActionAttributes<HiddenApiAttribute>().Any())
            {
                string key = "/" + apiDescription.RelativePath;
                if (key.Contains("?"))
                {
                    int idx = key.IndexOf("?", System.StringComparison.Ordinal);
                    key = key.Substring(0, idx);
                }
                swaggerDoc.paths.Remove(key);
            }                
        }
    }
}

3、修改SwaggerConfig,注入過濾器

取消注釋
c.DocumentFilter<ApplyDocumentVendorExtensions>();
修改為
c.DocumentFilter<HiddenApiFilter>();

4、測試

public class BaseApiController2 : ApiController
{
    [HiddenApi]
    public void test1()
    {

    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM