.net core 3.0 swgaaer 5.x 实现api 接品过滤

新建一个特性类SwaggerIgnoreAttribute

    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
    public class SwaggerIgnoreAttribute : Attribute
    {

    }

新建一个SwaggerIgnoreFilter 继承 IDocumentFilter实现Apply方法重写实现过滤

 public class SwaggerIgnoreFilter : IDocumentFilter
    {
        public string[] hiddeApi = new string[] { "Quartz" };
        /// <summary>
        /// 重写Apply方法,移除隐藏接口的生成
        /// </summary>
        /// <param name="swaggerDoc">swagger文档文件</param>
        /// <param name="context"></param>
        public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
        {
            foreach (ApiDescription apiDescription in context.ApiDescriptions)
            {
                var api = apiDescription.ActionDescriptor as Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor; //这里强转来获取到控制器的名称
                var contoller = api.ControllerName;
                if (api.ControllerName.IsContainsIn(hiddeApi))//过滤的核心逻辑
                {
                    string key = "/" + apiDescription.RelativePath;
                    if (key.Contains("?"))
                    {
                        int idx = key.IndexOf("?", StringComparison.Ordinal);
                        key = key.Substring(0, idx);
                    }
                    swaggerDoc.Paths.Remove(key);
                }

            }
        }
    }


然后在Startup.cs文件中的swagger 配置中使用

image.png


本文作者:admin

本文链接:https://www.javalc.com/post/19.html

版权声明:本篇文章于2020-09-29,由admin发表,转载请注明出处:分享你我。如有疑问,请联系我们

.net core给所有api接口加统一前缀

发表评论

取消
扫码支持