日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core 6 Minimal API

發布時間:2023/12/4 asp.net 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core 6 Minimal API 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ASP.NET Core 6 Minimal API

Intro

微軟在 ASP.NET 6 Preview 4 的介紹文章中介紹了即將到來的 ASP.NET Core 6 中的最小 API 的雛形,我們現在已經基本可以達到最小化 API 了雛形了,在 Preview 4 的時候就寫了這個小示例,但是不夠簡潔,沒有達到最簡潔的代碼,現在在 Preview 5 上嘗試一下,感覺已經很簡潔了,于是就想分享一下

Sample-0

在 Preview 4 的時候,示例是下面這樣的:

using?System; using?Microsoft.AspNetCore.Builder;var?app?=?WebApplication.Create(args); app.Map("/",?(Func<string>)(()?=>?"Hello?World")); app.Run();

主要是使用了新增的 WebApplication/WebApplicationBuilder API,然后結合了 C# 9 中的 Top-Level Statement,去掉了 Main 方法的聲明

C# 10 New Features

在即將到來 C# 10 中的兩個新特性可以幫助我們簡化這個特性,分別是:

  • global using

  • lamdba 優化

通過 global using 這個 feature 我們可以實現命令空間的統一管理這樣就可以避免寫很多 namespace 的引用了,我們可以把常用的 namespace 放在一個文件中管理,類似于 MVC 中的 _ViewImports.cshtml 和 Razor Page 中的 _Imports,這樣就可以簡化上面的 using 了,之前看介紹說是,ASP.NET Core 6 會把 ASP.NET Core 相關的常用的命令空間通過 global using 的方式默認引用,這樣上面的示例中就不需要再引用命名空間了。

另外一個 feature 則是對于 lambda 表達式的優化,可以自動進行類型推斷來隱式的轉換成委托,就可以簡化上面強制類型轉換成 Func<string> 了,就可以自動的隱式轉換了,

除此之外,我們還可以方便的在 lamdba 表達式上加 Attribute 注解,這有助于大大簡化 API 書寫的復雜度,具體看后面的示例吧

Sample-1

使用 C# 10 新特性之后的代碼:

var?app?=?WebApplication.Create(args); app.Map("/",?()?=>?"Hello?World"); app.Run();

主要有兩點變化,一個是 Func<string> 的轉換不再需要了,一個是命名空間的引用,會放在一個單獨 Imports 文件中添加全局的命名空間引用

Imports 內容如下:

global?using?System; global?using?System.Collections.Generic; global?using?System.Linq; global?using?System.Threading.Tasks; global?using?Microsoft.AspNetCore.Builder; global?using?Microsoft.AspNetCore.Http; global?using?Microsoft.AspNetCore.Mvc; global?using?Microsoft.AspNetCore.Hosting; global?using?Microsoft.AspNetCore.Routing; global?using?Microsoft.Extensions.DependencyInjection; global?using?Microsoft.Extensions.Hosting; global?using?Microsoft.Extensions.Logging; global?using?Microsoft.Extensions.Configuration;

上面提到了我們可以很方便在 lamdba 表達式上使用 Attribute,下面我們就來一個例子:

var?app?=?WebApplication.Create(args); app.MapPost("/info",?[HttpPost](IWebHostEnvironment?env)?=>?new? {Time?=?DateTime.UtcNow,env.EnvironmentName? }); app.Run();

除了 Attribute,我們還可以添加參數,參數可以自動從依賴注入服務中獲取,如上面的 IWebHostEnvironment

接著我們來測試一下我們的 API 看試試 work 了吧,現在我們已經可以使用 dotnet watch 來運行項目,會自動啟用 Hot Reload,但是測試發現,感覺現在的 ASP.NET Core 里的 Hot Reload,還是有點問題,需要使用 Ctrl + R 來重新 build 才能生效,不知道是不是我姿勢不對,不知道大家有沒有遇到這樣的問題,希望后面的版本能夠解決這個問題

可以通過 dotnet watch 來啟動項目

接著我們就可以通過 http://localhost:5000 或者 https://localhost:5001 來訪問我們的 API 了

訪問 http://localhost:5000,會看到下面的結果

直接訪問 http://localhost:5000/info,會看到類似下面的結果,這是因為我們的 info API 只允許 POST 方式進行訪問

通過工具用 POST 方式訪問 http://localhost:5000/info,可以看到類似下面的結果

可以看到我們的 API 都已經正常工作了~~

More

上面的示例代碼可以在 Github 上獲取 https://github.com/WeihanLi/SamplesInPractice/tree/master/net6sample/MininalAPI

編譯需要安裝 .NET 6 ?preview 5 環境

目前 .NET 6 Preview 還是有一些問題的,還不太建議大家實際項目進行升級,當然自己想嘗試是可以的

如果使用遇到了什么問題,也可以通過 Github 上的 issue 向微軟反饋 https://github.com/dotnet/core/issues/6389

References

  • https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-6-preview-4/

  • https://github.com/WeihanLi/SamplesInPractice/tree/master/net6sample/MininalAPI

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的ASP.NET Core 6 Minimal API的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。