首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Swashbuckle从WebAPI上的Swagger文档中省略方法

如何使用Swashbuckle从WebAPI上的Swagger文档中省略方法
EN

Stack Overflow用户
提问于 2015-04-17 14:08:25
回答 11查看 152.9K关注 0票数 242

我有一个C# ASP.NET WebAPI应用程序,它使用Swashbuckle自动生成API文档。我希望能够从文档中省略某些方法,但我似乎不知道如何告诉Swagger不要将它们包含在Swagger输出中。

我感觉到这与添加模型或模式筛选器有关,但不清楚该做什么,文档似乎只提供了如何为方法修改输出的示例,而不是从输出中完全删除它。

EN

Stack Overflow用户

发布于 2019-02-20 14:39:51

做一个过滤器

代码语言:javascript
复制
public class SwaggerTagFilter : IDocumentFilter
{
    public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
    {
        foreach(var contextApiDescription in context.ApiDescriptions)
        {
            var actionDescriptor = (ControllerActionDescriptor)contextApiDescription.ActionDescriptor;
            
            if(!actionDescriptor.ControllerTypeInfo.GetCustomAttributes<SwaggerTagAttribute>().Any() && 
               !actionDescriptor.MethodInfo.GetCustomAttributes<SwaggerTagAttribute>().Any())
            {
                var key = "/" + contextApiDescription.RelativePath.TrimEnd('/');
                swaggerDoc.Paths.Remove(key);
            }
        }
    }
}

创建一个属性

代码语言:javascript
复制
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class SwaggerTagAttribute : Attribute
{
}

应用于startup.cs

代码语言:javascript
复制
services.AddSwaggerGen(c => {
    c.SwaggerDoc(1, new Info { Title = "API_NAME", Version = "API_VERSION" });
    c.DocumentFilter<SwaggerTagFilter>(); // [SwaggerTag]
});

将SwaggerTag属性添加到您希望包含在Swagger中的方法和控制器中

票数 9
EN
查看全部 11 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29701573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档