.NET Core 使用swagger進行分組顯示

来源:https://www.cnblogs.com/FateHuli/archive/2019/05/06/10821018.html
-Advertisement-
Play Games

其實,和swagger版本管理類似;只是平時介面太多;不好供前端人員進行篩選。 下麵進入主題: 首先: 然後設置UI: 最後就是使用啦: 在controller或者action上打上 GroupName根據自己的命名進行分組就可以了. 總的來說和設置apiVersion類似,這裡就不多介紹了 ...


其實,和swagger版本管理類似;只是平時介面太多;不好供前端人員進行篩選。

下麵進入主題:

首先:

 1 //註冊Swagger生成器,定義一個和多個Swagger 文檔
 2             services.AddSwaggerGen(c =>
 3             {
 4                 c.SwaggerDoc("v1", new Info
 5                 {
 6                     Version = "v1",
 7                     Title = "公共模塊",
 8                     Description = "介面說明(多模式管理,右上角切換)",
 9                     TermsOfService = "",
10                     Contact = new Contact { Name = "Fatefox", Email = "[email protected]" }
11                 });
12                 c.SwaggerDoc("gp", new Info { Title = "登錄模塊", Version = "GP" });
13                 c.SwaggerDoc("mom", new Info { Title = "業務模塊", Version = "YW" });
14                 c.SwaggerDoc("dm", new Info { Title = "其他模塊", Version = "QT" });
15                 //設置要展示的介面
16                 c.DocInclusionPredicate((docName, apiDes) =>
17                 {
18                     if (!apiDes.TryGetMethodInfo(out MethodInfo method))
19                         return false;
20                     /*使用ApiExplorerSettingsAttribute裡面的GroupName進行特性標識
21                      * DeclaringType只能獲取controller上的特性
22                      * 我們這裡是想以action的特性為主
23                      * */
24                     var version = method.DeclaringType.GetCustomAttributes(true).OfType<ApiExplorerSettingsAttribute>().Select(m => m.GroupName);
25                     if (docName == "v1" && !version.Any())
26                         return true;
27                     //這裡獲取action的特性
28                     var actionVersion = method.GetCustomAttributes(true).OfType<ApiExplorerSettingsAttribute>().Select(m => m.GroupName);
29                     if (actionVersion.Any())
30                         return actionVersion.Any(v => v == docName);
31                     return version.Any(v => v == docName);
32                 });
33                 //添加授權
34                 c.AddSecurityDefinition("Bearer", new ApiKeyScheme
35                 {
36                     Description = "請輸入帶有Bearer開頭的Token",
37                     Name = "Authorization",
38                     In = "header",
39                     Type = "apiKey"
40                 });
41                 //認證方式,此方式為全局添加
42                 c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>>
43                 {
44                     { "Bearer", Enumerable.Empty<string>() }
45                 });
46                 //c.OperationFilter<WebUserAPI.Common.AssignOperationVendorExtensions>();
47                 //設置SjiggJSON和UI的註釋路徑.
48                 // 為 Swagger JSON and UI設置xml文檔註釋路徑
49                 var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
50                 var xmlPath = Path.Combine(basePath, "WebUserAPI.xml");
51                 var xmlmodelPath = Path.Combine(basePath, "WebUserAPIMdoel.xml");//添加model註釋
52                 c.IncludeXmlComments(xmlmodelPath);
53                 c.IncludeXmlComments(xmlPath, true);//controller註釋;必須放最後,否則後面的會覆蓋前面的
54             });

然後設置UI:

// 添加Swagger介面文檔服務
            app.UseSwagger();

            //啟用SwaggerUI樣式
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "公共模塊");
                c.SwaggerEndpoint("/swagger/gp/swagger.json", "登錄模塊");
                c.SwaggerEndpoint("/swagger/mom/swagger.json", "業務模塊");
                c.SwaggerEndpoint("/swagger/dm/swagger.json", "其他模塊");
                c.DocExpansion(Swashbuckle.AspNetCore.SwaggerUI.DocExpansion.None);
            });

 

最後就是使用啦:

在controller或者action上打上

ApiExplorerSettings(GroupName = "gp")

GroupName根據自己的命名進行分組就可以了.

總的來說和設置apiVersion類似,這裡就不多介紹了


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

-Advertisement-
Play Games
更多相關文章
  • CPU Usage ​ ● GC Alloc - 記錄了游戲運行時代碼產生的堆記憶體分配。這會導致ManagedHeap增大,加速GC的到來。我們要儘可能避免不必要的堆記憶體分配,同時註意:1、檢測任何一次性記憶體分配大於2KB的選項;2、檢測每幀都具有20B以上記憶體分配的選項。 ● WaitForTar ...
  • /// <summary> /// 日誌處理幫助類 /// </summary> public class LogHelper { private static Queue<string> ErrorQueue = new Queue<string>(); static Action<string> ...
  • (採用微軟公司驅動) 1.打開vs點擊工具: 點擊連接到資料庫: 選擇紅線內選項,同時在右邊點擊下載(博主已下載過了,所以右側沒有下載選項) 2.安裝好後參照oracle的安裝目錄下的 tnsnames.ora文件的最後一段修改Oracle Developer Tools for Visual St ...
  • » 引用百度解釋: 語法糖(Syntactic sugar),也譯為糖衣語法,是由英國電腦科學家彼得·約翰·蘭達(Peter J. Landin)發明的一個術語,指電腦語言中添加的某種語法,這種語法對語言的功能並沒有影響,但是更方便程式員使用。通常來說使用語法糖能夠增加程式的可讀性,從而減少程式 ...
  • 客戶端向Web伺服器發送的任意一個Http請求在任何情況下都會得到一個響應,每個響應均具有一個由3位數字表示的狀態碼和相應的描述文字,不同數值的狀態碼體現了不同類型的響應狀態。W3C對響應碼狀態的範圍進行瞭如下的規範。 100~199:信息狀態碼,代表請求已被接收並需要繼續處理。 200~299:成 ...
  • 下表為多線程操作常見對象: object data = null; ThreadPool.QueueUserWorkItem((state) => { }, data); 高 獲取或設置一個布爾值,該值指示 System.Timers.Timer 是否應只引發一次 System.Timers.Tim ...
  • 該系列文章啟發自 "How to: Create a Windows Service that schedules jobs, logs and is configurable by means of dependency injection" 閱讀優秀的項目源碼,是非常值得推崇的學習方式。閱讀之後 ...
  • Abp翻譯文檔:https://github.com/ABPFrameWorkGroup/AbpDocument2Chinese ABP官網:https://aspnetboilerplate.com https://aspnetboilerplate.com/Pages/Documents/Dyn ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...