.net?6精簡(jiǎn)版webapi教程及熱重載、代碼自動(dòng)反編譯演示
前言:
.net6LTS版本發(fā)布已經(jīng)有若干天了。此處做一個(gè)關(guān)于使用.net6開(kāi)發(fā)精簡(jiǎn)版webapi(minimalapi)的入門(mén)教程,以及VS2022上面的兩個(gè)強(qiáng)大的新技能(熱重載、代碼自動(dòng)反編譯)的順帶演示。
1、新建一個(gè)項(xiàng)目。此處就命名為SomeExample:

2、選擇.net6版本,并且此處先去掉HTTPS配置以及去掉使用控制器的選項(xiàng):

3、創(chuàng)建完成以后,原始畫(huà)面如下所示。并且,解決方案一欄只剩下program文件,其他文件都被精簡(jiǎn)掉了。并且沒(méi)有Main函數(shù)入口和命名空間等。

4、接下來(lái)開(kāi)始做幾個(gè)簡(jiǎn)單的webapi方法案例。先刪掉原有的,替換為自定義的來(lái)個(gè)webapi方法,一個(gè)Get,一個(gè)Post。具體代碼如下圖所示。

5、運(yùn)行以后,會(huì)打開(kāi)自帶的swagger頁(yè)面。大佬們可以自行比對(duì)代碼部分和swagger部分的一些特點(diǎn)。

6、執(zhí)行HelloWorld這個(gè)Get方法的執(zhí)行結(jié)果,如下圖所示。

7、執(zhí)行HelloMiniApi這個(gè)Post方法的執(zhí)行結(jié)果,如下圖所示。

8、Api根據(jù)不同的用途,在swagger展示上面,咱們還可以對(duì)它進(jìn)行一些分類(lèi)。分類(lèi)通過(guò)設(shè)置Tags標(biāo)簽來(lái)實(shí)現(xiàn),具體設(shè)置內(nèi)容:在方法的末尾設(shè)置WithTags,里面指定分類(lèi)的顯示的名稱(chēng)。運(yùn)行以后的swagger展示效果和有關(guān)代碼,如下圖所示。

9、對(duì)api方法進(jìn)行分代碼文件管理。如果API方法很多,全寫(xiě)在program里面也不現(xiàn)實(shí)。所以下面做個(gè)拓展。新建用于測(cè)試使用的靜態(tài)類(lèi)TestService,并且實(shí)現(xiàn)一個(gè)靜態(tài)方法TestApi。其中,方法的參數(shù)必須是thisWebApplication。然后就可以通過(guò)傳入的參數(shù),來(lái)拓展實(shí)現(xiàn)webapi,例如此處新增一個(gè)ServiceApi的api方法,以及有關(guān)其他實(shí)現(xiàn),如下圖所示。

10、新增拓展的api以后,需要在program文件里面引用使用,詳細(xì)內(nèi)容如下圖所示。

11、運(yùn)行以后的swagger展示圖。

12、測(cè)試下執(zhí)行結(jié)果,返回預(yù)期結(jié)果,說(shuō)明測(cè)試成功。

13、測(cè)試下VS2022熱重載的功能,在返回值里面進(jìn)行修改,然后點(diǎn)擊熱重載小火苗按鈕進(jìn)行熱更新。

14、熱更新以后,不需要重新編譯,直接在swagger展示頁(yè)對(duì)剛才設(shè)置的api方法進(jìn)行調(diào)用,調(diào)用結(jié)果如下圖所示,說(shuō)明熱重載更新成功。將來(lái)遇到需要調(diào)試的代碼時(shí)候,大佬們都可以很方便地進(jìn)行熱更新,無(wú)需重新編譯,可以大大提高效率。

15、接下來(lái)是依賴(lài)注入的驗(yàn)證測(cè)試。新增一個(gè)測(cè)試服務(wù)類(lèi)TestDependencyInjection,具體實(shí)現(xiàn)內(nèi)容如圖所示。

16、TestDependencyInjection對(duì)應(yīng)的接口ITestDependencyInjection內(nèi)容:

17、在program文件里面,對(duì)上面的服務(wù)進(jìn)行注冊(cè)。此處注冊(cè)一個(gè)單例實(shí)例,具體代碼如下圖展示。

18、接下來(lái)是驗(yàn)證依賴(lài)注入是否成功。此處我在ServiceApi這個(gè)webapi方法里面進(jìn)行注入。注入需要注意事項(xiàng):在webapi方法的委托類(lèi)型的參數(shù)里面,第一個(gè)參數(shù)必須是HttpContext;然后后面是自己的參數(shù),此處是注入服務(wù)的接口。并且在api方法里面調(diào)用了show方法進(jìn)行驗(yàn)證。

19、運(yùn)行程序,在swagger展示頁(yè)面點(diǎn)擊執(zhí)行對(duì)應(yīng)的webapi方法,并查看結(jié)果。如下圖所示,輸出show方法里面的內(nèi)容,代表依賴(lài)注入成功。

20、再擴(kuò)展個(gè)VS2022的隱藏技能:引用的第三方或者nuget包時(shí)候(不限制.net版本),在對(duì)應(yīng)的封裝的類(lèi)或者方法上面,按F12,可以直接進(jìn)入到反編譯以后的代碼里面去,可以看到封裝的源碼。例如此處以UseSwagger為例,在此處按F12進(jìn)去瞅瞅究竟。

21、正常情況下咱們應(yīng)該F12進(jìn)去只能看見(jiàn)屬性名稱(chēng)、方法名稱(chēng),看不到具體實(shí)現(xiàn)。而現(xiàn)在是可以看到具體實(shí)現(xiàn)的代碼的。如下圖所示,方法里面的具體代碼都有,也可以繼續(xù)進(jìn)一步F12去看底層的代碼。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ASP.NET?Core命名空間System.Text.Encodings.Web介紹
這篇文章介紹了ASP.NET?Core命名空間System.Text.Encodings.Web,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01
如何在WebForm中使用javascript防止連打(雙擊)
如何在WebForm中使用javascript防止連打(雙擊)...2007-01-01
AjaxControlToolKit CalendarExtender(日歷擴(kuò)展控件)的使用方法
使用方法很簡(jiǎn)單,就不啰嗦那么多了 翻譯過(guò)來(lái)就是 日歷擴(kuò)展控件吧 配合TextBox控件使用只要TextBox獲的焦點(diǎn)就會(huì)顯示出來(lái)日歷2008-10-10

