.NET 6新特性试用 | 最小Web API
前言
如果你使用過其他一些輕量級Web框架,比如Node.JS,你就會知道,創建具有最小依賴項的HTTP API是多么簡單:
var?express?=?require('express') var?app?=?express()app.get('/',?function?(req,?res)?{res.send('hello?My?IO!') })app.listen(3000)而現在,使用.NET 6,我們也可以在ASP.NET Core中創建僅包括最少文件、功能和依賴項的最小Web API。
最小Web API
要實現上面相同的功能,只需要三行代碼:
var?app?=?WebApplication.Create(args);app.MapGet("/",?()?=>?"hello?My?IO!");app.Run();首先,創建一個WebApplication實例;
然后,使用MapGet方法配置了一個最小Web API端點;
最后,使用Run方法啟動Web API應用程序。
但是,要在生產環境下使用的API不可能這么簡單,至少需要處理依賴項和中間件。
Demo
1.使用模板
打開Visual Studio 2022,創建新項目,選擇“ASP.NET Core Web API”項目模板:
可以看到Use controllers選項默認選中的,取消該選項,則會創建最小Web API。
2.代碼結構
相較于VS2019生成的項目結構,文件精簡了,而且代碼量也少很多:
var?builder?=?WebApplication.CreateBuilder(args);//?Add?services?to?the?container. //?Learn?more?about?configuring?Swagger/OpenAPI?at?https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen();var?app?=?builder.Build();//?Configure?the?HTTP?request?pipeline. if?(app.Environment.IsDevelopment()) {app.UseSwagger();app.UseSwaggerUI(); }app.UseHttpsRedirection();var?summaries?=?new[] {"Freezing",?"Bracing",?"Chilly",?"Cool",?"Mild",?"Warm",?"Balmy",?"Hot",?"Sweltering",?"Scorching" };app.MapGet("/weatherforecast",?()?=> {var?forecast?=?Enumerable.Range(1,?5).Select(index?=>new?WeatherForecast(DateTime.Now.AddDays(index),Random.Shared.Next(-20,?55),summaries[Random.Shared.Next(summaries.Length)])).ToArray();return?forecast; }) .WithName("GetWeatherForecast");app.Run();internal?record?WeatherForecast(DateTime?Date,?int?TemperatureC,?string??Summary) {public?int?TemperatureF?=>?32?+?(int)(TemperatureC?/?0.5556); }相較于以前我們使用兩個單獨的文件Program.cs和Startup.cs來配置應用程序托管和啟動。現在,全部都在Program.cs中實現:
在WebApplicationBuilder實例上使用Addxxx方法向DI容器注冊特定服務,類似Startup類的ConfigureServices方法實現。
在WebApplication實例上使用Usexxx方法將一系列中間件加入到HTTP管道,類似Startup類的Configure方法實現。
DTO使用record定義,而且也放在同一個Program.cs文件中。
3.功能演示
現在我們運行應用程序,Visual Studio 2022默認使用 Kestrel Web服務器,而不是IIS Express。
最小Web API默認已經集成了Swagger,我們可以直接在這里驗證API是否工作正常:
結論
作為要在生產環境下使用的API,隨著項目需求和復雜性的增加,單個文件會變得非常臃腫。
因此,將不同功能代碼分解到不同的層和文件中肯定是必然的結果。
目前來說,最小Web API僅用于快速創建演示項目,而對生產項目使用自定義模板,可能是較好的選擇。
總結
以上是生活随笔為你收集整理的.NET 6新特性试用 | 最小Web API的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EF Core 小技巧:迁移已经应用到数
- 下一篇: 05Prism WPF 入门实战 - N