C# WebAPI中使用Swagger

来源:https://www.cnblogs.com/peterYong/archive/2018/09/01/9569453.html
-Advertisement-
Play Games

隨著互聯網技術的發展,現在的網站架構基本都由原來的後端渲染,變成了:前端渲染、先後端分離的形態,而且前端技術和後端技術在各自的道路上越走越遠。 前端和後端的唯一聯繫,變成了API介面;API文檔變成了前後端開發人員聯繫的紐帶,變得越來越重要,swagger就是一款讓你更好的書寫API文檔的框架。 其 ...


隨著互聯網技術的發展,現在的網站架構基本都由原來的後端渲染,變成了:前端渲染、先後端分離的形態,而且前端技術和後端技術在各自的道路上越走越遠。 

前端和後端的唯一聯繫,變成了API介面;API文檔變成了前後端開發人員聯繫的紐帶,變得越來越重要,swagger就是一款讓你更好的書寫API文檔的框架。

其他API文檔工具

沒有API文檔工具之前,大家都是手寫API文檔的,在什麼地方書寫的都有,有在confluence上寫的,有在對應的項目目錄下readme.md上寫的,每個公司都有每個公司的玩法,無所謂好壞。

書寫API文檔的工具有很多,但是能稱之為“框架”的,估計也只有swagger了。 

在此先介紹一款其他的API文檔工具,叫rap,這玩意兒用一句話就能概括:解放生產力,代替手寫API的web工具。 

RAP寫起來確實比手寫文檔要快, 可以選擇某個項目,寫針對某個項目的API 

RAP是由阿裡開發的,整個阿裡都在用,還不錯。github地址為:https://github.com/thx/RAP 
當然咯,rap不可能只有線上版本,肯定可以部署到私服上。 
https://github.com/thx/RAP/wiki/deploy_manual_cn

swagger

rap挺好的,但是和swagger比起來有點輕量。 
先看看swagger的生態使用圖:

 

其中,紅顏色的是swaggger官網方推薦的。

下麵再細看看swagger的生態的具體內容:

swagger-ui

這玩意兒從名字就能看出來,用來顯示API文檔的。和rap不同的是,它不可以編輯。

swagger-editor

就是一個線上編輯文檔說明文件(swagger.json或swagger.yaml文件)的工具,以方便生態中的其他小工具(swagger-ui)等使用。 
左邊編輯,右邊立馬就顯示出編輯內容來。

編輯swagger說明文件使用的是yaml語法具體的內容可以去官網查看。

各種語言版本的根據annotation或者註釋生成swagger說明文檔的工具

目前最流行的做法,就是在代碼註釋中寫上swagger相關的註釋,然後,利用小工具生成swagger.json或者swagger.yaml文件。

目前官方沒有推出。github上各種語言各種框架各種有,可以自己搜吧搜吧,這裡只說一個php相關的。 
swagger-php :https://github.com/zircote/swagger-php

swagger-validator

這個小工具是用來校驗生成的文檔說明文件是否符合語法規定的。用法非常簡單,只需url地址欄,根路徑下加上一個參數url,參數內容是放swagger說明文件的地址。即可校驗。 

docker hub地址為:https://hub.docker.com/r/swaggerapi/swagger-validator/ 
可以pull下鏡像來自己玩玩。

swagger-codegen

代碼生成器,腳手架。可以根據swagger.json或者swagger.yml文件生成指定的電腦語言指定框架的代碼。 
有一定用處,Java系用的挺多。工業上應該不咋用。

mock server

這個目前還沒有找到很合適的mock工具,包括rap也好,其他API文檔工具也好,都做的不夠完善,大多就是根據說明文件,例如swagger.json等生成一些死的靜態的mock數據,不能夠根據限定條件:例如“只能是數字,必傳”等做出合理的回應。

 

 

C# 在webapi項目中配置Swagger

1、安裝包 Swashbuckle

    會自動生成 SwaggerConfig.cs文件

2、右鍵項目屬性—>生成—>勾選XML文檔文件

  eg  bin\WebApi.xml    【若對api寫了註釋,併在swagger中 開啟了,則會自動生成一些說明節點】

3、運行  eg:http://localhost:2146/swagger

4、發現,安裝完成後,寫註釋並沒有在swagger頁面上面增加,所以我們現在開開啟註釋

在SwaggerConfig類中,EnableSwagger的時候添加下麵XML解析(預設是有的,只是註釋掉了)

c.IncludeXmlComments(GetXmlCommentsPath());

並添加方法 即可

/// <summary>
        ///  添加XML解析
        /// </summary>
        /// <returns></returns>
        private static string GetXmlCommentsPath()
        {
            return string.Format("{0}/bin/WebApi.XML", System.AppDomain.CurrentDomain.BaseDirectory);
        }
View Code

xml文檔中也會自動寫入註釋

5、調試

 註意參數是字元串時需要帶雙引號"",、

 

更多參考:

https://www.cnblogs.com/lhbshg/p/8711604.html

 


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

-Advertisement-
Play Games
更多相關文章
  • Spring MVC高級技術包括但不限於web.xml配置、異常處理、跨重定向請求傳遞數據 1、web.xml文件的配置 ContextLoaderListener是根容器,DispatcherServlet是子容器。父容器中管理的bean可以被子容器引用,反之,不行。它們都從各自的xml文件初始化 ...
  • ROW_NUMBER() OVER (ORDER BY (select Null)) AS Id entity framework 查詢中有這句會有異常 ...
  • 隨著ASP.NET Aries的普及,剛好也有點閑空,趕緊把Excel導入功能的教程補上。 Excel導入功能,分為四篇:單表配置(上)、多表高級配置(中)、配置規則(下)、代碼編寫(番外篇)。 本篇介紹單表配置功能。 ...
  • 基於Dapper二次封裝了一個易用的ORM工具類:SqlDapperUtil,把日常能用到的各種CRUD都進行了簡化封裝,讓普通程式員只需關註業務即可,因為非常簡單,故直接貼源代碼,大家若需使用可以直接複製到項目中,該SqlDapperUtil已廣泛用於公司項目中。 ColumnAttributeT ...
  • 最近做了微信小程式支付,支付成功之後發現notify_url回調地址竟然沒有訪問。 檢查了無數次代碼,下單結果裡面的回調地址看了又看,都沒有錯啊。 把回調地址複製出來到瀏覽器上面,外網也是可以訪問的啊。 然後我再分析,為什麼以前公眾號支付都沒有出現這種類型的錯誤,偏偏小程式就出現了呢。 然後對比了一 ...
  • 搭建一個.net core webapi項目 在開始之前,請先安裝最新版本的VS2017,以及最新的.net core 2.1。 首先創建一個Asp.Net Core Web應用程式 這個應用程式是可以直接運行的,採用的微軟預設的頁面。但是在運行中會出現這樣的頁面,因為預設使用用https導致 那麼 ...
  • 9月1號是開學的日子,雖然已不是在校學生,但是仍然要時刻保持學習。 工作初期偶然接觸到了博客園,保存了很多有用的帖子,但一直沒想過寫自己的博客。最近在團隊領導的建議下, 開通了屬於自己的個人博客,目的是為了記錄自己的學習經歷,項目經驗,和解決困難問的題思路方法,便於日後自己查看。 在此記錄一下此刻激 ...
  • Proto.Actor中提供了基於tcp/ip的通迅來實現Remote,可以通過其Remot實現對Actor的調用。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...