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
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...