原文: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()
{
}
}