創建第一個 Minimal API 應用程序
要開始使用 Minimal API,可以創建一個新的 ASP.NET Core 項目,選擇“空”項目模板。創建完成后,項目中會包含一個 Program.cs 文件,代碼如下:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");app.Run();
代碼解析
WebApplication.CreateBuilder:該方法用于注冊 Web 應用程序主機的常用組件,例如配置、日志記錄、路由等。開發者可以在此階段通過注冊服務、讀取配置等方式增強主機功能。
app.MapGet:用于定義一個 GET 請求的端點。Minimal API 支持所有常見的 HTTP 方法(如 GET、POST、PUT、PATCH、DELETE 等)。
app.Run:啟動應用程序并開始監聽傳入的請求。
Minimal API 的核心是 RequestDelegate,它是一個簡單的委托,接受一個 HttpContext 參數并返回一個任務:
public delegate Task RequestDelegate(HttpContext context);
通過依賴注入,開發者可以將額外的參數傳遞給端點定義,從而增強其功能。
模型綁定與返回類型
Minimal API 提供了簡化的模型綁定機制。以下是一個示例,展示如何使用 POST 方法處理請求并返回結果:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/hugs", (Hug hug) =>
Results.Ok(new Hugged(hug.Name, "Side Hug"))
);app.Run();public record Hug(string Name);
public record Hugged(string Name, string Kind);
模型綁定
Minimal API 的模型綁定機制會將請求體(假設為 JSON 格式)直接反序列化為指定的模型類型。例如,上述代碼中的 Hug 模型會自動綁定到請求體中的 JSON 數據:
POST http://localhost:5272/hugs
Content-Type: application/json
{ "Name": "Khalid Abuhakmeh" }
返回類型
Minimal API 提供了 Results 類,用于簡化常見的狀態碼和響應類型處理。開發者可以使用 Results.Ok、Results.Json 等方法快速生成響應。
依賴注入與服務
Minimal API 完全支持 ASP.NET Core 的依賴注入機制。以下示例展示了如何通過依賴注入實現服務的重構:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton(new HuggingService());
var app = builder.Build();
app.MapPost("/hugs", (Hug hug, HuggingService hugger) =>
Results.Ok(hugger.Hug(hug))
);app.Run();public record Hug(string Name);
public record Hugged(string Name, string Kind);public class HuggingService
{
private readonly string[] _hugKinds = { "Side Hug", "Bear Hug", "Polite Hug", "Back Hug", "Self Hug" }; public Hugged Hug(Hug hug) =>
new(hug.Name, _hugKinds[new Random().Next(_hugKinds.Length)]);
}
在上述代碼中,HuggingService 被注冊為單例服務,并通過依賴注入傳遞給端點處理函數。
請求與響應過濾器
ASP.NET Core 7 引入了 Minimal API 過濾器,用于減少重復代碼。以下示例展示了如何添加一個時間戳過濾器:
async ValueTask
通過過濾器,開發者可以在請求處理的不同階段插入自定義邏輯,類似于中間件的功能。
路由組與共享行為
Minimal API 提供了 RouteGroupBuilder,允許開發者將路由按邏輯分組,并為組內的所有路由添加共享行為。以下是一個示例:
var hugs = app.MapGroup("hugs")
.AddEndpointFilter(Timestamp);
hugs.MapPost("", (Hug hug, HuggingService hugger) =>
Results.Ok(hugger.Hug(hug))
);hugs.MapGet("", (HuggingService hugger) =>
Results.Ok(hugger.Hug(new Hug("Test")))
);
通過路由組,開發者可以集中管理共享的元數據、過濾器等,簡化代碼結構。
Minimal API 的局限性
盡管 Minimal API 提供了輕量化的開發體驗,但也存在一些局限性:
- 社區支持:相比 ASP.NET Core MVC,Minimal API 的社區生態尚不成熟,相關的開源解決方案和文檔較少。
- 開發決策:Minimal API 的自由度較高,但這也可能導致開發者在項目結構、模型定義等方面面臨更多選擇,增加了決策負擔。
- 一致性:由于缺乏統一的開發規范,不同的 Minimal API 應用可能存在較大差異,而 MVC 提供了更標準化的開發方式。
總結
ASP.NET Core Minimal API 是一個輕量級、高性能的開發框架,適合構建基于 JSON 的微服務應用。本文介紹了 Minimal API 的核心概念,包括應用程序設置、端點定義、模型綁定、依賴注入、過濾器和路由組等。同時,我們也探討了其局限性和適用場景。
對于希望簡化開發流程并提升性能的開發者來說,Minimal API 是一個值得嘗試的選擇。隨著社區的不斷發展,Minimal API 的功能和生態也將更加完善。
原文鏈接: https://blog.jetbrains.com/dotnet/2023/04/25/introduction-to-asp-net-core-minimal-apis/
熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
eeuss鲁片一区二区三区
|
日本免费在线视频不卡一不卡二|
久久精品国产久精国产|
欧美精选午夜久久久乱码6080|
亚洲精品国产成人久久av盗摄|
成人ar影院免费观看视频|
久久久久国产精品麻豆ai换脸|
麻豆国产精品视频|
久久久久久久综合|
99国产精品视频免费观看|
中文字幕成人在线观看|
99精品久久99久久久久|
一级精品视频在线观看宜春院|
欧美亚日韩国产aⅴ精品中极品|
图片区日韩欧美亚洲|
亚洲精品一区二区三区香蕉|
成人深夜福利app|
一区二区三区免费|
日韩一级大片在线|
久久成人精品无人区|
色综合久久天天综合网|
自拍偷拍亚洲激情|
99天天综合性|
欧美亚洲丝袜传媒另类|
偷拍日韩校园综合在线|
风间由美一区二区av101
|
正在播放亚洲一区|
波波电影院一区二区三区|
日韩电影免费一区|
亚洲综合男人的天堂|
国产精品久久综合|
国产午夜亚洲精品理论片色戒|
7777精品伊人久久久大香线蕉的
|
肉丝袜脚交视频一区二区|
91精品一区二区三区久久久久久
|
91亚洲国产成人精品一区二区三
|
国产激情一区二区三区四区
|
中文字幕视频一区二区三区久|
欧美一区二区三区喷汁尤物|
欧美精品日韩精品|
日韩欧美卡一卡二|
欧美国产一区二区|
日本午夜一本久久久综合|
蜜桃视频一区二区三区|
国产高清亚洲一区|
91蝌蚪porny|
国v精品久久久网|
av中文字幕亚洲|
欧美丝袜丝nylons|
|精品福利一区二区三区|
久久精品国产99久久6|
欧美亚洲一区二区在线|
国产欧美一区二区精品久导航|
亚洲自拍都市欧美小说|
成人在线视频首页|
26uuu另类欧美亚洲曰本|
亚洲国产日韩一区二区|
91亚洲午夜精品久久久久久|
久久这里只有精品视频网|
日韩成人av影视|
欧美艳星brazzers|
蜜桃精品视频在线|
欧美高清视频www夜色资源网|
午夜伊人狠狠久久|
日本道免费精品一区二区三区|
中文字幕亚洲精品在线观看|
91色.com|
黄色日韩网站视频|
亚洲精品欧美激情|
日韩精品一区二区在线观看|
国产精品婷婷午夜在线观看|
99麻豆久久久国产精品免费|
天堂一区二区在线免费观看|
国产日本欧美一区二区|
色悠悠亚洲一区二区|
蜜桃久久久久久久|
亚洲一区二区三区四区在线|
欧美一区二区三区在线|
成人三级伦理片|
国产91高潮流白浆在线麻豆|
中文字幕一区二区三区蜜月|
色素色在线综合|
韩国成人精品a∨在线观看|
国产精品乱码久久久久久|
欧美性videosxxxxx|
国产91精品一区二区麻豆网站
|
国产精品综合一区二区三区|
一区二区三区精密机械公司|
国产福利不卡视频|
蜜桃久久久久久|
亚洲一区免费视频|
久久久99精品免费观看不卡|
久久只精品国产|
国产精品国产精品国产专区不片|
国产欧美一区二区三区沐欲|
国产精品久久久久永久免费观看|
欧美tk—视频vk|
欧美tickling挠脚心丨vk|
精品日韩一区二区三区|
中文字幕一区二区三区精华液|
国产精品欧美极品|
日韩在线观看一区二区|
极品少妇一区二区三区精品视频
|
美女任你摸久久|
色天天综合色天天久久|
国产成人免费视频精品含羞草妖精|
另类专区欧美蜜桃臀第一页|
亚洲区小说区图片区qvod|
欧美mv日韩mv国产网站|
欧美亚洲图片小说|
欧美女孩性生活视频|
欧美三区免费完整视频在线观看|
欧美一区二区女人|
51精品久久久久久久蜜臀|
精品播放一区二区|
久久精品99国产精品日本|
欧美性猛片aaaaaaa做受|
亚洲制服丝袜在线|
jlzzjlzz国产精品久久|
国产精品国产三级国产有无不卡
|
欧美电影免费观看高清完整版|
91精品国产入口在线|
欧美高清在线视频|
国产精品久久久99|
国产成人av一区二区三区在线
|
日韩欧美一二三|
日韩美一区二区三区|
六月丁香综合在线视频|
欧美网站一区二区|
亚洲男人电影天堂|
91在线播放网址|
一区二区三区成人在线视频|
一本一本久久a久久精品综合麻豆
一本一道波多野结衣一区二区
|
亚洲r级在线视频|
91精品一区二区三区久久久久久
|
91麻豆福利精品推荐|
久久综合给合久久狠狠狠97色69|
精品无人码麻豆乱码1区2区
|
国产成人精品一区二区三区四区
|
国产精品久久久久久久久久免费看|
大陆成人av片|
日韩福利电影在线|
中文字幕中文字幕一区|
日韩一区二区三区免费看|
不卡一区二区三区四区|
精品免费视频一区二区|
成人亚洲一区二区一|
日本va欧美va精品发布|
视频在线在亚洲|
精品国产乱码久久久久久久久|
日韩精品在线看片z|
国产一区二区三区免费观看|
免费成人你懂的|
一区二区三区欧美在线观看|
欧美日韩中文精品|
日韩一区二区视频在线观看|
8x福利精品第一导航|
欧美在线播放高清精品|
日韩午夜在线播放|
2014亚洲片线观看视频免费|
国产精品蜜臀av|
亚洲精品自拍动漫在线|
国产精品人成在线观看免费|
亚洲欧美日韩在线|
国产精品视频第一区|
国产精品美女久久久久av爽李琼
|
成人精品在线视频观看|
精品视频一区三区九区|
日韩欧美自拍偷拍|
中文字幕日本不卡|
久久这里只有精品首页|
91精品国产乱码久久蜜臀|
久久精品亚洲乱码伦伦中文|
秋霞午夜鲁丝一区二区老狼|
国产综合色精品一区二区三区|
99久久婷婷国产|
久久精品网站免费观看|
免费不卡在线视频|
日韩一区二区视频|
国产精品乱码妇女bbbb|
国产精品白丝jk黑袜喷水|
国产精品1024久久|
欧美精品一区二区三区蜜桃
|
久久精品国产网站|
欧美日韩免费一区二区三区
|
久久综合久久鬼色中文字|
亚洲夂夂婷婷色拍ww47|
99久久婷婷国产|
91视频免费观看|
五月天久久比比资源色|
欧美刺激脚交jootjob|
国产剧情在线观看一区二区|
91成人国产精品|
日韩av网站免费在线|
精品久久一区二区|
日日骚欧美日韩|
久久久精品tv|
色噜噜夜夜夜综合网|
国产一本一道久久香蕉|
一区二区三区中文字幕|