.net?6精簡版webapi教程及熱重載、代碼自動反編譯演示
前言:
.net6LTS版本發(fā)布已經(jīng)有若干天了。此處做一個關(guān)于使用.net6開發(fā)精簡版webapi(minimalapi)的入門教程,以及VS2022上面的兩個強大的新技能(熱重載、代碼自動反編譯)的順帶演示。
1、新建一個項目。此處就命名為SomeExample:
2、選擇.net6版本,并且此處先去掉HTTPS配置以及去掉使用控制器的選項:
3、創(chuàng)建完成以后,原始畫面如下所示。并且,解決方案一欄只剩下program文件,其他文件都被精簡掉了。并且沒有Main函數(shù)入口和命名空間等。
4、接下來開始做幾個簡單的webapi方法案例。先刪掉原有的,替換為自定義的來個webapi方法,一個Get,一個Post。具體代碼如下圖所示。
5、運行以后,會打開自帶的swagger頁面。大佬們可以自行比對代碼部分和swagger部分的一些特點。
6、執(zhí)行HelloWorld這個Get方法的執(zhí)行結(jié)果,如下圖所示。
7、執(zhí)行HelloMiniApi這個Post方法的執(zhí)行結(jié)果,如下圖所示。
8、Api根據(jù)不同的用途,在swagger展示上面,咱們還可以對它進(jìn)行一些分類。分類通過設(shè)置Tags標(biāo)簽來實現(xiàn),具體設(shè)置內(nèi)容:在方法的末尾設(shè)置WithTags,里面指定分類的顯示的名稱。運行以后的swagger展示效果和有關(guān)代碼,如下圖所示。
9、對api方法進(jìn)行分代碼文件管理。如果API方法很多,全寫在program里面也不現(xiàn)實。所以下面做個拓展。新建用于測試使用的靜態(tài)類TestService,并且實現(xiàn)一個靜態(tài)方法TestApi。其中,方法的參數(shù)必須是thisWebApplication。然后就可以通過傳入的參數(shù),來拓展實現(xiàn)webapi,例如此處新增一個ServiceApi的api方法,以及有關(guān)其他實現(xiàn),如下圖所示。
10、新增拓展的api以后,需要在program文件里面引用使用,詳細(xì)內(nèi)容如下圖所示。
11、運行以后的swagger展示圖。
12、測試下執(zhí)行結(jié)果,返回預(yù)期結(jié)果,說明測試成功。
13、測試下VS2022熱重載的功能,在返回值里面進(jìn)行修改,然后點擊熱重載小火苗按鈕進(jìn)行熱更新。
14、熱更新以后,不需要重新編譯,直接在swagger展示頁對剛才設(shè)置的api方法進(jìn)行調(diào)用,調(diào)用結(jié)果如下圖所示,說明熱重載更新成功。將來遇到需要調(diào)試的代碼時候,大佬們都可以很方便地進(jìn)行熱更新,無需重新編譯,可以大大提高效率。
15、接下來是依賴注入的驗證測試。新增一個測試服務(wù)類TestDependencyInjection,具體實現(xiàn)內(nèi)容如圖所示。
16、TestDependencyInjection對應(yīng)的接口ITestDependencyInjection內(nèi)容:
17、在program文件里面,對上面的服務(wù)進(jìn)行注冊。此處注冊一個單例實例,具體代碼如下圖展示。
18、接下來是驗證依賴注入是否成功。此處我在ServiceApi這個webapi方法里面進(jìn)行注入。注入需要注意事項:在webapi方法的委托類型的參數(shù)里面,第一個參數(shù)必須是HttpContext;然后后面是自己的參數(shù),此處是注入服務(wù)的接口。并且在api方法里面調(diào)用了show方法進(jìn)行驗證。
19、運行程序,在swagger展示頁面點擊執(zhí)行對應(yīng)的webapi方法,并查看結(jié)果。如下圖所示,輸出show方法里面的內(nèi)容,代表依賴注入成功。
20、再擴展個VS2022的隱藏技能:引用的第三方或者nuget包時候(不限制.net版本),在對應(yīng)的封裝的類或者方法上面,按F12,可以直接進(jìn)入到反編譯以后的代碼里面去,可以看到封裝的源碼。例如此處以UseSwagger為例,在此處按F12進(jìn)去瞅瞅究竟。
21、正常情況下咱們應(yīng)該F12進(jìn)去只能看見屬性名稱、方法名稱,看不到具體實現(xiàn)。而現(xiàn)在是可以看到具體實現(xiàn)的代碼的。如下圖所示,方法里面的具體代碼都有,也可以繼續(xù)進(jìn)一步F12去看底層的代碼。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ASP.NET MVC中_ViewStart.cshtml作用介紹
這篇文章介紹了ASP.NET MVC中_ViewStart.cshtml的作用,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03那些年,我還在學(xué)習(xí)asp.net(二) 學(xué)習(xí)筆記
那些年覺得看視頻是很輕松的了解一個東西,但是這樣的不足就是感覺太慢了,沒有看書來得快,所以在有了一些了解后,還得看點書,也許書上的不一定好,但書上會把每一個應(yīng)該說到的地方說到,好有個初步的認(rèn)識2012-03-03.NET?Core使用flyfire.CustomSerialPort實現(xiàn)Windows/Linux跨平臺串口通訊
本文詳細(xì)講解了.NET?Core使用flyfire.CustomSerialPort實現(xiàn)Windows/Linux跨平臺串口通訊的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01.NET?6更新使.NET生態(tài)系統(tǒng)蛻變
微軟正式發(fā)布.NET最新長期支持版本.NET?6,這個版本的更新重點,除了C#和F#都有許多語言功能改進(jìn)之外,.NET?6終于集大成,成為跨瀏覽器、云計算、桌面、物聯(lián)網(wǎng)和移動應(yīng)用程序的統(tǒng)一平臺,性能也獲得大幅提升,并且更完整支持Arm642022-01-01.Net行為型設(shè)計模式之職責(zé)鏈模式(Chain of Responsibility)
這篇文章介紹了.Net行為型設(shè)計模式之職責(zé)鏈模式(Chain of Responsibility),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05