Swagger+AutoRest 生成web api客戶端(.Net)

對于.net來說,用web api來構建服務是一個不錯的選擇,都是http請求,調用簡單,但是如果真的要在程序中調用,則還有些工作要做,比如我們需要手寫httpClient調用,并映射Model, 如果服務少還可以,多了就繁瑣了。
關于Swagger的信息,其他博客已經有介紹,這里就不多說。 大家可以參考http://chuansong.me/n/322685748559?,使用Swagger后,可以解決服務沒有文檔或者文檔和服務不同步的問題,同時Swagger自帶的就有模擬請求的功能,所以可以在頁面上直接測試接口。 這些不僅對開發,對測試同學也是友好的。?
下面是一個簡單的Web API,添加注釋
引用swagger后,訪問http://XXX/swagger/ui/index(XXX為你的域名),結果如下,可以看到頁面上會顯示你的服務,以及服務的描述。
點擊具體某個服務,你可以看到你定義的參數,并可以直接在頁面上發起測試。?
有了Swagger后,方便查看服務,接下來就是如何調用服務,過往我們通常會寫一個HttpUtils的類,里面包含SendGet,SendPost兩個方法,如果是簡單參數還好,但是如果Get請求返回一個對象,或者Post的時候需要發送一個對象,則需要手寫這些類進行封裝。 這里介紹一個組件:AutoRest (https://github.com/Azure/AutoRest), 簡單來說,就是一個EXE工具,可以根據Swagger的結構生成服務的客戶端,這個客戶端可以讓你像調用本地方法一樣調用服務,方法內部包裝了Http請求。?
在Swagger頁面,你可以點擊Explore按鈕,通過瀏覽器可以看到這里返回了一個Json字符串,頁面也是根據這個字符串進行的渲染,AutoRest也是根據這個結構來生成調用類。
選擇Nuget,下載AutoRest
在solution下面找到pageage文件夾,目錄如下:
在命令行里面打開 ,輸入如下?AutoRest.exe -CodeGenerator CSharp -Modeler Swagger -Input http://XXX/swagger/docs/v1 -Namespace UserServiceClient, 其中Input的參數就是Swagger的Json地址,具體參數含義可以查看文檔。?
執行成功后,在當前目錄下會生成一個Generated目錄
打開文件如下:
新建一個控制臺程序,將整個文件夾copy到控制臺程序下,文件夾名稱可以隨意定義。
同時控制臺程序需要在Nuget中引用一個Client.?
寫代碼,調用,同時支持同步接口和異步接口。?
至此,全部完成。?
1. 以上這種方式,可以由服務端的同學完成,然后將生成的代碼,簡單修改后,編譯發布到公司內nuget上,其他同學可以直接到公司內nuget下載
2. 服務端同學可以只集成Swagger,然后其他同學如果要用,可以通過工具生成。?
3. 以上僅是公司再未使用RPC前,方便服務調用的一種方式。 后面我會介紹一些.Net下的其他的服務調用方式,比如Hession,serverstack

轉載于:https://www.cnblogs.com/beyondbit/p/5957124.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270711.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270711.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270711.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

抽象方法和抽象類

抽象方法: 1、從上面的例子中我們可以看到抽象方法跟普通方法是有區別的,它沒有自己的主體(沒有{}包起來的 業務邏輯),跟接口中的方法有點類似。所以我們沒法直接調用抽象方法 2、抽象方法不能用private修飾&#xf…

adb logcat 保存_保存的logcat在Android設備上的文本文件

I had found some crashes while running the application in android device, which is not showing in emulator. So i need to save the Logcat in a text file in my devices memory or SD card. Could you please suggest me good method to do this?解決方案adb shell l…

電腦技巧:六款Mac電腦上值得推薦的看圖軟件

??作者主頁:IT技術分享社區 ??作者簡介:大家好,我是IT技術分享社區的博主,從事C#、Java開發九年,對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽: 數據庫領域優質創作者🏆&#x…

C#用Zlib壓縮或解壓縮字節數組

/// <summary>/// 復制流/// </summary>/// <param name"input">原始流</param>/// <param name"output">目標流</param>public static void CopyStream(System.IO.Stream input, System.IO.Stream output){byte[] bu…

Git的smart Checkout\force checkout\Don‘t Checkout的區別

我們在develop分支修改了代碼,但是沒有commit,所以在切換到其他分支的時候回彈出這個窗口. smart checkout就會把沖突的這部分內容帶到目的分支&#xff08;如果你沒有點進窗口的那些文件處理沖突的話&#xff09; force checkout就不會把沖突的這部分內容帶到目的分支 dont ch…

軟件:推薦5款職場人必備的效率神器APP

目錄 1.番茄TO DO&#xff08;支持Android、ios端下載&#xff09; 2.塊時間 &#xff08;支持Android、ios端下載&#xff09; 3.滴答清單&#xff08;支持Android、ios端、PC端下載&#xff09; 4.Eventai&#xff08;僅ios端下載&#xff09; 5.Ihour&#xff08;支持Androi…

python滾動文本框_調整滾動Tkinter文本框的大小

我想要一個滾動的Tkinter文本框來填充最大的分配空間。我有點工作。。。在由于某些原因&#xff0c;當我拉伸窗口時&#xff0c;文本小部件很好&#xff1b;但是&#xff0c;滾動條在x軸上有大量的填充。在第二個問題是當我縮小窗口時&#xff0c;屏幕上的滾動條消失了。在有人…

深入理解 KVC\KVO 實現機制 — KVC

KVC和KVO都屬于鍵值編程而且底層實現機制都是isa-swizzing&#xff0c;所以本來想放在一起講的。但是篇幅有限所以就分成了兩篇博文 KVO實現機制傳送門 KVC概述 KVC是Key Value Coding的簡稱。它是一種可以通過字符串的名字&#xff08;key&#xff09;來訪問類屬性的機制。而不…

python中字典和集合對象是無序的_Python基礎(四):元組、字典和集合

基礎學習第四彈&#xff0c;常用對象&#xff1a;元組、字典和集合一、元組1.1 元組的應用場景思考&#xff1a;如果想要存儲多個數據&#xff0c;但是這些數據是不能修改的數據&#xff0c;怎么做&#xff1f;答&#xff1a;列表&#xff1f;列表可以一次性存儲多個數據&#…

Windows常用必備軟件整理,太全了,值得收藏

目錄 1、Office系列 2、殺毒軟件 3、視頻播放和視頻處理 4、音樂播放 5、壓縮解壓 6、輸入法 7、PDF閱讀軟件 8、文件加密 9、網盤 10、社交聊天 11、日常辦公軟件 ?12、圖片/照片處理? 13、系統自帶的工具 Windows常用必備軟件整理&#xff0c;太全了&#xff0c;值得收藏&…

常見的 Error 和 Exception

如下是常見的 Error 和 Exception&#xff1a; 1&#xff09;運行時異常&#xff08;RuntimeException&#xff09;也稱 【非檢查型異常 UncheckedException】&#xff1a; Nullpointer Exception&#xff1a;空指針異常&#xff1b;ClassCastException&#xff1a;類型強制轉…

Datatable/Dataset 轉 JSON方法

當數據庫表的數據在一般處理程序中查出來需要將這個表數據返回到前臺的jquery中&#xff0c;需要將數據拼成json字符串形式&#xff0c;這里是將數據庫數據查出放在Datatable中&#xff0c;然后在一般處理程序中將datatable轉成json的幾個方法&#xff0c;根據不同的情況調用不…

數據庫:SQLServer數據庫備份方式介紹

今天小編給大家梳理一下數據庫備份的相關知識&#xff0c;希望對大家能有所幫助&#xff01;1、完整備份完整備份相當于針對整個數據庫備份&#xff0c;包含數據庫的全部內容。數據庫完整備份可以將數據庫的所有內容備份為一個.Bak文件。后續可以通過該備份文件在本機或者拷貝到…

注入雙括號報錯注入_SQL手動注入:sqlilabs(less110)

種一棵樹最好的時間是10年前&#xff0c;其次是現在。忘了是誰前言說實話&#xff0c;由于前段時間學 python &#xff0c;對于 OWASP TOP10 漏洞的學習都有所落下&#xff0c;雖然現在也在慢慢復習當中&#xff0c;但是今晚談及的 SQL 注入漏洞手動注入和自動化(sqlmap)注入的…

try、catch、finally用法總結

一、異常的處理&#xff1a;抓拋模型過程一&#xff1a;"拋"&#xff1a;程序在正常執行的過程中&#xff0c;一旦出現異常&#xff0c;就會在異常代碼處生成一個對應異常類的對象。并將此對象拋出。一旦拋出對象以后&#xff0c;其后的代碼就不再執行。關于異常對象…

markdown學習/mou

markdown編輯器mou markdown編輯器的使用很簡單&#xff0c;mac平臺選擇課 MOU 這款比較輕的客戶端。 使用也很方便&#xff0c;打開軟件&#xff0c;->helo->mou help 就有各種示例&#xff0c;照葫蘆畫瓢。 有些關鍵字需要轉義,使用的時候要注意&#xff0c;比如插入一…

硬件知識:內存條出現故障的解決方案!

“電腦不時的突然出現藍屏”&#xff0c;“開機之后毫無規律的死機”&#xff0c;“開不了機&#xff0c;一開機就出現嘶鳴聲”&#xff0c;如果你的電腦出現了以上情況&#xff0c;就是你的內存兼容性出了問題&#xff0c;那么這種故障該如何解決呢&#xff1f;下面&#xff0…

api zabbix 拓撲圖 獲取_zabbix網絡拓撲圖配置-Maps(示例代碼)

zabbix network map”可以簡單的理解為動態網絡拓撲圖&#xff0c;可以針對業務來配置zabbix map&#xff0c;通過map可以了解應用的整體狀況&#xff1a;服務器是否異常、網絡是否有故障、應用當前什么狀態。如果你不需要這些東西&#xff0c;至少你可以通過network map繪制一…

.NET 面試題(2)

61、Application 、Cookie和 Session 兩種會話有什么不同&#xff1f; 1.Application 儲存在服務端&#xff0c;沒有時間限制&#xff0c;服務器關閉即銷毀&#xff08;前提是自己沒寫銷毀方法&#xff09; 2.Session 儲存在服務端&#xff0c;客戶端&#xff08;瀏覽器&#x…

盤點程序員必備的專業術語,值得看一看

英文縮寫 API 應用程序接口&#xff08;英語&#xff1a;Application Programming Interface&#xff0c;簡稱&#xff1a;API&#xff09;&#xff0c;又稱為應用編程接口&#xff0c;就是軟件系統不同組成部分銜接的約定。由于近年來軟件的規模日益龐大&#xff0c;常常需要把…