.net WebApi的Swagger中隐藏接口

在我们布置生产环境的时候往往只希望可以只调用接口而不希望可以看到帮助文档,这是我们就需要将接口隐藏起来。

一、在SwaggerConfig.cs中加入

        ///   
        /// 隐藏接口,不生成到swagger文档展示  
        ///   
        [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Class)]

        public partial class HiddenApiAttribute : System.Attribute { }
        public class HiddenApiFilter : IDocumentFilter
        {
            ///   
            /// 重写Apply方法,移除隐藏接口的生成  
            ///   
            /// swagger文档文件  
            ///   
            /// api接口集合  
            public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
            {
                foreach (ApiDescription apiDescription in apiExplorer.ApiDescriptions)
                {
                    if (Enumerable.OfType(apiDescription.GetControllerAndActionAttributes()).Any())
                    {
                        string key = "/" + apiDescription.RelativePath;
                        if (key.Contains("?"))
                        {
                            int idx = key.IndexOf("?", System.StringComparison.Ordinal);
                            key = key.Substring(0, idx);
                        }
                        swaggerDoc.paths.Remove(key);
                    }
                }
            }
        }

如图所示

.net WebApi的Swagger中隐藏接口_第1张图片

并且在SwaggerConfig.cs中加入

c.DocumentFilter();

如图所示

.net WebApi的Swagger中隐藏接口_第2张图片

API隐藏实例

将需要隐藏的接口的前面加上[HiddenApi]即可隐藏该接口的文档生成

.net WebApi的Swagger中隐藏接口_第3张图片

 

你可能感兴趣的:(.net WebApi的Swagger中隐藏接口)