zoukankan      html  css  js  c++  java
  • Swagger 隐藏具体API

    一、why

      在swagger ui界面中有时候不想显示某些api,通过下面的方式可以实现。

      1.1、新建一个类实现IDocumentFilter接口
    using Swashbuckle.Swagger;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Http.Description;
    
    namespace InvoiceApi.InvoiceHelper
    {
        /// <summary>  
        /// 隐藏接口,不生成到swagger文档展示  
        /// </summary>  
        [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Class)]
        public partial class HiddenApiAttribute : System.Attribute { }
        public class HiddenApiFilter : IDocumentFilter
        {
    
            public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
            {
                foreach (ApiDescription apiDescription in apiExplorer.ApiDescriptions)
                {
                    if (Enumerable.OfType<HiddenApiAttribute>(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);
                    }
                }
            }
        }
    }
    
      1.2、在SwaggerConfig修改配置

      1.3、在想隐藏的api上面添加特性 [HiddenApi]
    using InvoiceApi.InvoiceHelper;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Web.Http;
    
    namespace InvoiceApi.Controllers
    {
    
        public class DownController : ApiController
        {
            /// <summary>
            /// 下载api参数文档
            /// </summary>
            /// <returns></returns>
            [HttpGet]
            [HiddenApi]
    
            public HttpResponseMessage DownloadDoc()
            {
                try
                {
                    var FilePath = System.Web.Hosting.HostingEnvironment.MapPath(@"~/Doc/api参数说明.docx");
                    var stream = new FileStream(FilePath, FileMode.Open);
                    HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
                    response.Content = new StreamContent(stream);
                    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
                    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        FileName = "纸质发票参数API文档.doc",
    
                    };
                    return response;
                }
                catch
                {
                    return new HttpResponseMessage(HttpStatusCode.NoContent);
                }
            }
    
        }
    }
    

      

  • 相关阅读:
    OpenCV -- Mat 转 QImage 函数
    Qt--checkbox
    QT 发布release版本
    JS_0014:JS刷新页面
    JS_0013:JS获取文件后缀名
    JS_0012:JS从一个有规则的字符串中随机选择一个字符再循环生成一个新的无规则的字符串
    JQuery0016:JQuery等待页面全部加载完后执行代码块
    JQuery0015:JQuery查找指定元素并修改其属性
    JS_0011:通过JS给div添加html标签内容
    JS_0010:获取url中指定的参数
  • 原文地址:https://www.cnblogs.com/WangJunZzz/p/8316587.html
Copyright © 2011-2022 走看看