.net core webapi 文件上傳在 Swagger 文檔中的有好提示處理

来源:https://www.cnblogs.com/intotf/archive/2018/12/06/10075162.html
-Advertisement-
Play Games

前提: 需要nuget Swashbuckle.AspNetCore 我暫時用的是 4.01 最新版本; 描述:解決 .net core webapi 上傳文件使用的是 IFormFile,在Swagger 介面描敘的時候很不友好,為解決介面文檔的友好描敘; 實際效果: 解決辦法: 步驟1 增加 S ...


前提:

  需要nuget   Swashbuckle.AspNetCore 我暫時用的是  4.01 最新版本;

 

 描述:解決 .net core webapi 上傳文件使用的是 IFormFile,在Swagger 介面描敘的時候很不友好,為解決介面文檔的友好描敘;

 

實際效果:

 

解決辦法:

  步驟1 增加 Swagger 的選項過濾器 SwaggerFileUploadFilter.cs

/// <summary>
    /// Swagger 上傳文件過濾器
    /// </summary>
    public class SwaggerFileUploadFilter : IOperationFilter
    {
        /// <summary>
        /// 應用過濾器
        /// </summary>
        /// <param name="operation"></param>
        /// <param name="context"></param>
        public void Apply(Operation operation, OperationFilterContext context)
        {
          #region 文件上傳處理
            if (!context.ApiDescription.HttpMethod.Equals("POST", StringComparison.OrdinalIgnoreCase) &&
                !context.ApiDescription.HttpMethod.Equals("PUT", StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            var fileParameters = context.ApiDescription.ActionDescriptor.Parameters.Where(n => n.ParameterType == typeof(IFormFile)).ToList();
            if (fileParameters.Count < 0)
            {
                return;
            }

            operation.Consumes.Add("multipart/form-data");
            foreach (var fileParameter in fileParameters)
            {
                var parameter = operation.Parameters.Single(n => n.Name == fileParameter.Name);
                operation.Parameters.Remove(parameter);
                operation.Parameters.Add(new NonBodyParameter
                {
                    Name = parameter.Name,
                    In = "formData",
                    Description = parameter.Description,
                    Required = parameter.Required,
                    Type = "file"
                });
            }
             #endregion
        }
    }

   步驟2 對 startup.cs swagger 配置項進行過濾

            services.AddSwaggerGen(options =>
            {
                ..........
                options.OperationFilter<SwaggerFileUploadFilter>();
            });

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 以博客園為例,爬取我的博客上首頁的發佈時間、標題、摘要,本篇先小試牛刀,先瞭解下它的強大之處,後面講beautifulsoup4的詳細功能。   一、安裝 1.打開cmd用pip線上安裝beautifulsoup4 >pip install beautifulsoup4 &nb ...
  • 新建發送郵件類 爬取英語學習資料 比如爬取英語學習鏈接:http://www.hjenglish.com/new/c1020/,將當前頁文章爬取到併發送郵件到指定郵箱: ...
  • 本節重點不講反射機制,而是講lambda表達式樹來替代反射中常用的獲取屬性和方法,來達到相同的效果但卻比反射高效。 每個人都知道,用反射調用一個方法或者對屬性執行SetValue和GetValue操作的時候都會比直接調用慢很多,這其中設計到CLR中內部的處理,不做深究。然而,我們在某些情況下又無法不 ...
  •  .NET Core實戰項目之CMS 第九章 設計篇 白話架構設計 前面兩篇文章給大家介紹了我們實戰的CMS系統的資料庫設計,源碼也已經上傳到伺服器上了。今天我們就好聊聊架構設計,在開始之前先給大家分享一下這幾天我一直在聽的《從零開始學架構》裡面關於架構設計的定義以及架構設計的三大原則,希望能對大 ...
  • 如今,基於Web版的Office 線上預覽與編輯功能已成為一種趨勢,而關於該技術的實現卻成為了國內大部份公司的技術挑戰,挑戰主要存在於兩方面: 其一:目前國內乃至微軟本身,還沒有相對較為完善的解決方案 其二:對於開發人員來說,可查詢資料甚少,即使翻牆,資料也甚少 基於如上的難點與挑戰,國內規模相對較 ...
  • LeaRun是一款基於.net的敏捷開發框架,框架內置角色、表單、工作流、嚮導式智能開發組件、即時通訊組件、APP開發組件、微信組件、通用許可權等一系列組件,軟體開發人員可以通過一系列簡單配置快速開發出OA、ERP、CRM、HRM、SAAS、MIS、移動APP、微信等眾多高質量信息系統。 官網lear ...
  • 下麵是treeview的用法TreeView組件是由多個類來定義的,TreeView組件是由命名空間"System.Windows .Forms"中的"TreeView"類來定義的,而其中的節點(即Node),是由命名空間"System.Windows .Forms"中的"TreeNode"來定義的 ...
  • 一、簡介 Aztec Code是1995年,由Hand HeldProducts公司的Dr. Andrew Longacre設計。它是一種高容量的二維條形碼格式。它可以對ASCII和擴展ASCII碼進行編碼。當使用最高容量和25%的糾錯級別的時候,Aztec可以對3000個字元或者3750個數字進行 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...