Swagger實例分享(VS+WebApi+Swashbuckle)

来源:https://www.cnblogs.com/xiaomengshan/archive/2019/07/18/11208637.html
-Advertisement-
Play Games

Swagger實例分享(VS+WebApi+Swashbuckle) Swagger可以很方便的為發佈的WebApi自動生成優雅的文檔,不需額外自己編寫,只需為項目配置好,是一個很好用的工具,做一個簡單的Demo和大家分享一下~ 1、使用HuGet導入Swashbuckle包 2、修改Swagger ...


Swagger實例分享(VS+WebApi+Swashbuckle)

  Swagger可以很方便的為發佈的WebApi自動生成優雅的文檔,不需額外自己編寫,只需為項目配置好,是一個很好用的工具,做一個簡單的Demo和大家分享一下~

 

1、使用HuGet導入Swashbuckle包

 

2、修改SwaggerConfig.cs

  導入Swashbuckle後會自動在站點的App_Start文件夾下生成SwaggerConfig.cs,用於配置Swagger頁面。配置的東西很多,下麵只列舉我個人需要的簡單的配置(因為其他沒研究)。

 1 public class SwaggerConfig
 2     {
 3         public static void Register()
 4         {
 5             var thisAssembly = typeof(SwaggerConfig).Assembly;
 6 
 7             GlobalConfiguration.Configuration
 8                 .EnableSwagger(c =>
 9                     {                      
10                         c.SingleApiVersion("v1", "MyWebApi").Contact(x =>
11                         {
12                             x.Name("Bobbie");  //配置界面頭部描述
13                         });
14 
15                         c.IncludeXmlComments(GetXmlCommentsPath("/bin/WarRoom.WebApi.XML"));  //配置模板XML路徑
16                         
17                     })
18                 .EnableSwaggerUi(c =>
19                     {      
                  c.InjectJavaScript(Assembly.GetExecutingAssembly(), "MyWebApi.Scripts.Swagger_CN.js");  //配置漢化js文件 20 }); 21 } 22 23 private static string GetXmlCommentsPath(string XmlPath) 24 { 25 return $@"{System.AppDomain.CurrentDomain.BaseDirectory}" + XmlPath; 26 } 27 }

 

3、配置項目屬性

主要是設置“生成”下的幾個配置,就是我畫紅框框的,下麵解釋一下幾個配置的作用:

(1)禁止警告1591是屬於禁止缺少註釋的警告的,不然沒有頭部註釋的類、函數都會有警告的下劃線,看著不舒服(但該警告不影響使用)。

(2)勾選XML文檔文件,會自動生成一個路徑,這個路徑要於SwaggerConfig.cs中配置的一致:

c.IncludeXmlComments(GetXmlCommentsPath("/bin/WarRoom.WebApi.XML"));

 

由此其實已經配置完成,下麵進行測試:

 

4、測試

  新建一個Controller,文件名為DemoController.cs:

 1 public class DemoController : ApiController
 2     {
 3         /// <summary>
 4         /// 我就是PostTest方法
 5         /// </summary>
 6         /// <param name="name">參數1</param>
 7         /// <returns></returns>
 8         [HttpGet]
 9         public string PostTest(string name)
10         {
11             string result = "Hello " + name;           
12             return result;
13         }

 

  然後運行,訪問localhost:27827/Swagger(網址埠看自己的項目),可以看到如下界面就是成功了:

  頁面會將介面路徑、介面函數、註釋、參數等基本信息都自動生成,還提供介面測試功能(單擊Try it Out),可以測試介面(可直接輸入參數)。

 

5、漢化

  有些朋友喜歡中文,這邊也測試一下漢化的功能,主要就是添加一個漢化功能的JS文件,併在SwaggerConfig.cs配置導入即可:

(1)新建名為Swagger_CN.js的文件,放在Scripts文件夾下:

 1 'use strict';  
 2 /** 
 3  * Translator for documentation pages. 
 4  * 
 5  * To enable translation you should include one of language-files in your index.html 
 6  * after <script src='lang/translator.js' type='text/javascript'></script>. 
 7  * For example - <script src='lang/ru.js' type='text/javascript'></script> 
 8  * 
 9  * If you wish to translate some new texsts you should do two things: 
10  * 1. Add a new phrase pair ("New Phrase": "New Translation") into your language file (for example lang/ru.js). It will be great if you add it in other language files too. 
11  * 2. Mark that text it templates this way <anyHtmlTag data-sw-translate>New Phrase</anyHtmlTag> or <anyHtmlTag data-sw-translate value='New Phrase'/>. 
12  * The main thing here is attribute data-sw-translate. Only inner html, title-attribute and value-attribute are going to translate. 
13  * 
14  */  
15 window.SwaggerTranslator = {  
16     _words: [],  
17     translate: function () {  
18         var $this = this;  
19         $('[data-sw-translate]').each(function () {  
20             $(this).html($this._tryTranslate($(this).html()));  
21             $(this).val($this._tryTranslate($(this).val()));  
22             $(this).attr('title', $this._tryTranslate($(this).attr('title')));  
23         });  
24     },  
25     _tryTranslate: function (word) {  
26         return this._words[$.trim(word)] !== undefined ? this._words[$.trim(word)] : word;  
27     },  
28     learn: function (wordsMap) {  
29         this._words = wordsMap;  
30     }  
31 }; 
32 /* jshint quotmark: double */  
33 window.SwaggerTranslator.learn({  
34     "Warning: Deprecated": "警告:已過時",  
35     "Implementation Notes": "實現備註",  
36     "Response Class": "響應類",  
37     "Status": "狀態",  
38     "Parameters": "參數",  
39     "Parameter": "參數",  
40     "Value": "",  
41     "Description": "描述",  
42     "Parameter Type": "參數類型",  
43     "Data Type": "數據類型",  
44     "Response Messages": "響應消息",  
45     "HTTP Status Code": "HTTP狀態碼",  
46     "Reason": "原因",  
47     "Response Model": "響應模型",  
48     "Request URL": "請求URL",  
49     "Response Body": "響應體",  
50     "Response Code": "響應碼",  
51     "Response Headers": "響應頭",  
52     "Hide Response": "隱藏響應",  
53     "Headers": "",  
54     "Try it out!": "試一下!",  
55     "Show/Hide": "顯示/隱藏",  
56     "List Operations": "顯示操作",  
57     "Expand Operations": "展開操作",  
58     "Raw": "原始",  
59     "can't parse JSON.  Raw result": "無法解析JSON. 原始結果",  
60     "Model Schema": "模型架構",  
61     "Model": "模型",  
62     "apply": "應用",  
63     "Username": "用戶名",  
64     "Password": "密碼",  
65     "Terms of service": "服務條款",  
66     "Created by": "創建者",  
67     "See more at": "查看更多:",  
68     "Contact the developer": "聯繫開發者",  
69     "api version": "api版本",  
70     "Response Content Type": "響應內容類型",  
71     "fetching resource": "正在獲取資源",  
72     "fetching resource list": "正在獲取資源列表",  
73     "Explore": "瀏覽",  
74     "Show Swagger Petstore Example Apis": "顯示 Swagger Petstore 示例 Apis",  
75     "Can't read from server.  It may not have the appropriate access-control-origin settings.": "無法從伺服器讀取。可能沒有正確設置access-control-origin。",  
76     "Please specify the protocol for": "請指定協議:",  
77     "Can't read swagger JSON from": "無法讀取swagger JSON於",  
78     "Finished Loading Resource Information. Rendering Swagger UI": "已載入資源信息。正在渲染Swagger UI",  
79     "Unable to read api": "無法讀取api",  
80     "from path": "從路徑",  
81     "server returned": "伺服器返回"  
82 });  
83 $(function () {  
84     window.SwaggerTranslator.translate();  
85 });  

 

(2)將Swagger_CN.js設置為“嵌入的資源”

屬性->生成操作->設置為“嵌入的資源”

 

(3)配置SwaggerConfig.cs

在EnableSwaggerUi下添加:
c.InjectJavaScript(Assembly.GetExecutingAssembly(), "MyWebApi.Scripts.Swagger_CN.js");  
註:MyWebApi.Scripts.Swagger_CN.js格式為:項目名.文件夾名.JS文件名


這個可以看上面的SwaggerConfig.cs文件配置。然後再次運行:

  現在就可以看到你日思夜想的中文了~



 


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

-Advertisement-
Play Games
更多相關文章
  • C++中經常會用到標準庫函數庫(STL)的string字元串類,跟其他語言的字元串類相比有所缺陷。這裡就分享下我經常用到的兩個字元串截斷函數: include include include include using namespace std; //根據字元切分string,相容最前最後存在字元 ...
  • 上次給大家分享了小白建站如何選擇虛擬空間及伺服器,及購買功能變數名稱的基礎知識,這些是硬性要求,你的網站要想運行起來,硬體只是基礎,真正的技術是軟體,關於PHP軟體開發技術,後面我們會慢慢的分享給大家,今天主要給大家分享的是,如何在你伺服器配置PHP運行的環境,有哪種模式,如何選擇呢? ...
  • C#是跟著楊老師的教程走的,在這裡感謝一下老師的無私奉獻,他的cnblog地址:>cgzl,他的B站地址:>solenovex。 進入正題: Delegate表示委托,委托是一種數據結構,它引用靜態方法或引用類實例及該類的實例方法。(引用官方文檔的英文原話) Represents a delegat ...
  • UEditor 的核心特點就是:產自大廠、開源免費、功能全面(相當全)、體驗較為切合國人習慣。只需要修改相應的後端代碼,即可把 UEditor/UMeditor 中的圖片上傳到諸如又拍雲 USS 或阿裡雲 OSS 等雲存儲伺服器上,既安全又經濟。 ...
  • 在我們做工業軟體中,經常會遇到要實時監控某一點,在這個點變化時去做一些事情 放入程式里呢,就是要實時監控某一屬性的值,當值發生變化時觸發事件,其核心就是藉助屬性的Set方法,來判斷當前set的值是否與原來的值相等,如果相等直接賦值不予理會,如果不相等,說明值變了,根據自己調用的方法,聲明委托,事件, ...
  • GDB資料庫SQL操作平臺 開發本軟體的初衷:由於計算資料庫要素層屬性的時候,涉及到要計算多個欄位,或者要根據代碼計算名稱,得一個一個的篩選並計算,過程比較繁瑣,於是就想能不能通過像處理SQLServer數據一樣的,通過寫SQL語句來執行,在此覺得很有必要,於是就開發了本軟體,通過SQL語句(可以通 ...
  • 首先要引用這個服務,http://www.webxml.com.cn/Webservices/WeatherWebService.asmx 添加服務和引用 >轉到 >高級 >添加WEB應用 >添加引用 到此OK。 1個text,1個button,2個lable private void btn_se ...
  • 嘗試了一天,嘗試了各種方法,一下方法最直接方便. ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...