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