相关疑难解决方法(0)

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

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

我觉得它与添加模型或模式过滤器有关,但它不明显该做什么,文档似乎只提供了如何修改方法的输出的示例,而不是从输出中完全删除它.

提前致谢.

.net c# asp.net swagger

110
推荐指数
9
解决办法
5万
查看次数

使用Swashbuckle和ASP.NET Identity限制对Swagger中某些API控制器的访问

所以,我开始使用Swagger.我完全爱上它的功能,但我对所有公开方法的可用性有所怀疑.

据我所知 - Swaschbuclke中包含的所有"auth"方法实际上都是关于API本身,但我不需要帮助 - 我的所有API都受API id /密钥对的保护.

我想以某种方式利用ASP.NET身份(登录系统)来限制对API页面的访问(/ swagger/ui/index).

有什么办法吗?Swaschbuckle中的任何方法?任何路线/身份黑客?

任何帮助表示赞赏.

编辑1:[ApiExplorerSettings(IgnoreApi = true)]属性不是我正在寻找的 - 它限制了对方法的所有访问,无论身份如何.

asp.net swagger asp.net-identity swagger-ui swashbuckle

10
推荐指数
1
解决办法
9978
查看次数

在SwashBuckle中删除带有IOperationFilter的路由

我正在寻找一种方法,以可配置的方式使用SwashBuckle在Swagger文档中显示/隐藏WebAPI路由.添加[ApiExplorerSettings(IgnoreApi = true)]确实会隐藏路由,但每次我想要更改时我都需要重新编译.

我已经研究过创建一个IOperationFilter使用我定义的自定义属性的方法.这样我可以用a装饰路线[SwaggerTag("MobileOnly")]并检查web.config或其他东西,看看是否应该显示路线.属性定义如下:

public class SwaggerTagAttribute : Attribute
{
    public string[] Tags { get; private set; }

    public SwaggerTagAttribute(params string[] tags)
    {
        this.Tags = tags;
    }
}
Run Code Online (Sandbox Code Playgroud)

所述IOperationFilter检测所述属性被定义并且IDocumentFilter去除的路径在这里被定义:

public class RemoveTaggedOperationsFilter : IOperationFilter, IDocumentFilter
{
    private List<string> TagsToHide;

    public RemoveTaggedOperationsFilter()
    {
        TagsToHide = ConfigurationManager.AppSettings["TagsToHide"].Split(',').ToList();
    }

    public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
    {
        var tags = apiDescription.ActionDescriptor
            .GetCustomAttributes<SwaggerTagAttribute>()
            .Select(t => t.Tags)
            .FirstOrDefault();

        if (tags != null && TagsToHide.Intersect(tags).Any()) …
Run Code Online (Sandbox Code Playgroud)

c# custom-attributes asp.net-web-api swagger swashbuckle

9
推荐指数
1
解决办法
6543
查看次数