自舉與框架初始化

MVC的初始化方式

在傳統的ASP.NET Core MVC中,應用程序的初始化通常通過Startup類完成。然而,ASP.NET Core 6.0引入了頂級語句的支持,簡化了初始化過程。現在,所有的引導代碼都集中在一個Program.cs文件中:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.MapControllers();
app.Run();

上述代碼中,AddControllers()方法用于注冊MVC框架的依賴項,而MapControllers()則負責注冊控制器的路由和中間件。

Minimal APIs的初始化方式

Minimal APIs通過更簡潔的方式實現了類似的功能。以下是一個典型的Minimal APIs初始化示例:

var app = WebApplication.CreateBuilder(args).Build();
app.MapGet("/", () => "Hello World!");
app.Run();

可以看到,Minimal APIs的初始化代碼更加簡潔,適合構建輕量級的HTTP服務。


路由定義與處理程序

MVC中的路由定義

在MVC中,路由可以通過兩種方式定義:基于約定的路由和基于屬性的路由。

  1. 基于約定的路由:通常用于網站開發,路由規則在Program.cs中定義,例如:

    app.UseRouting();
    app.UseEndpoints(endpoints =>
    {
       endpoints.MapControllerRoute(
           name: "default",
           pattern: "{controller=Home}/{action=Index}/{id?}");
    });
  2. 基于屬性的路由:更適合API開發,通過在控制器或操作方法上添加路由屬性實現,例如:

    [Route("api/[controller]")]
    [ApiController]
    public class WeatherForecastController : ControllerBase
    {
       [HttpGet]
       public IEnumerable Get() { ... }
    }

Minimal APIs中的路由定義

Minimal APIs通過MapGetMapPost等方法定義路由。例如:

app.MapGet("/weatherforecast", () => new[] { "Sunny", "Rainy" });

此外,Minimal APIs還支持通過MapMethods定義自定義HTTP動詞的路由。


模型綁定

模型綁定是從HTTP請求中提取數據并將其轉換為.NET類型的過程。

MVC中的模型綁定

在MVC中,可以通過以下方式實現模型綁定:

  1. 從請求體綁定JSON數據

    [HttpPost]
    public IActionResult Create([FromBody] WeatherForecast forecast) { ... }
  2. 從查詢字符串綁定復雜類型

    [HttpGet]
    public IActionResult Search([FromQuery] SearchParameters parameters) { ... }
  3. 綁定簡單類型:簡單類型會自動從路由或查詢字符串中綁定。

Minimal APIs中的模型綁定

Minimal APIs的模型綁定與MVC類似,但更為簡潔。例如:

app.MapPost("/create", (WeatherForecast forecast) => { ... });

需要注意的是,Minimal APIs目前不支持通過[FromQuery]綁定復雜類型。


HTTP響應

無論是MVC還是Minimal APIs,都支持將返回類型自動序列化為HTTP響應。

MVC中的HTTP響應

在MVC中,可以通過返回IActionResult來生成響應,例如:

public IActionResult Get()
{
    return Ok(new { Message = "Success" });
}

Minimal APIs中的HTTP響應

Minimal APIs通過IResult實現類似功能。例如:

app.MapGet("/success", () => Results.Ok(new { Message = "Success" }));

依賴注入

依賴注入(DI)是ASP.NET Core的重要特性,MVC和Minimal APIs均支持DI。

MVC中的依賴注入

在MVC中,依賴項通常通過構造函數注入:

public class WeatherForecastController : ControllerBase
{
    private readonly IWeatherService _service;

    public WeatherForecastController(IWeatherService service)
    {
        _service = service;
    }
}

Minimal APIs中的依賴注入

Minimal APIs則通過將依賴項作為參數傳遞給處理程序實現:

app.MapGet("/forecast", (IWeatherService service) => service.GetForecast());

授權與安全

ASP.NET Core的授權機制同樣適用于MVC和Minimal APIs。

MVC中的授權

在MVC中,可以通過[Authorize]屬性聲明授權需求,例如:

[Authorize(Roles = "Admin")]
public IActionResult AdminOnly() { ... }

Minimal APIs中的授權

Minimal APIs通過在路由定義中附加元數據實現授權,例如:

app.MapGet("/admin", [Authorize] () => "Admin Area");

總結

Minimal APIs為開發者提供了一種輕量級的替代方案,適用于構建簡單、高效的HTTP服務。與MVC相比,Minimal APIs的主要優勢在于其簡潔性和靈活性,開發者可以根據需求選擇所需的功能組件,而無需引入不必要的復雜性。在實際開發中,可以根據項目的規模和需求,靈活選擇MVC或Minimal APIs作為技術棧的一部分。

原文鏈接: https://benfoster.io/blog/mvc-to-minimal-apis-aspnet-6/
熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
返回頂部
上一篇
Vue中使用echarts@4.x中國地圖及AMap相關API的使用
下一篇
在ASP.NET Core中自動注冊Minimal APIs
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
国产亚洲精品中文字幕| 欧美年轻男男videosbes| 国产日韩欧美高清| 亚洲精品视频免费观看| 日本精品裸体写真集在线观看| 日韩欧美高清在线| 午夜精彩视频在线观看不卡| 欧美午夜视频网站| 成人免费看的视频| 亚洲色图欧洲色图婷婷| 欧美日韩精品一二三区| 日韩国产欧美一区二区三区| 成人黄色电影在线| 亚洲美女视频在线| 久久精品亚洲麻豆av一区二区| 精品粉嫩aⅴ一区二区三区四区| 国产精华液一区二区三区| 成人在线视频一区二区| 激情综合网激情| 亚洲一区二区三区四区五区中文| 日韩视频免费直播| 国产mv日韩mv欧美| 丁香一区二区三区| 91麻豆免费在线观看| 99久久精品免费看| 在线国产电影不卡| 91福利在线看| 欧美一级二级三级乱码| 欧美成人乱码一区二区三区| 欧美一级精品在线| 国产日韩欧美电影| 亚洲美女在线国产| 日韩av一级片| 成人黄色小视频| 欧美精品视频www在线观看| 欧美v国产在线一区二区三区| 欧美一区二区三区四区高清| 久久精品一区四区| 亚洲成人先锋电影| 国产制服丝袜一区| 欧美性xxxxxxxx| 国产欧美日产一区| 日本91福利区| 91精品国产综合久久精品| 国产精品久久久久久久岛一牛影视| 亚洲久草在线视频| 精品无人码麻豆乱码1区2区 | proumb性欧美在线观看| 91麻豆精品国产综合久久久久久| 国产视频一区二区三区在线观看 | 欧美国产禁国产网站cc| 久久成人免费电影| 欧美疯狂性受xxxxx喷水图片| 一区二区在线观看av| k8久久久一区二区三区| 最新成人av在线| 91久久香蕉国产日韩欧美9色| 国产精品美女久久久久久2018| 成人午夜在线视频| 亚洲精品日韩综合观看成人91| 不卡的电影网站| 一区二区三区不卡视频| 91精品久久久久久久久99蜜臂| 乱一区二区av| 亚洲综合免费观看高清完整版在线| 国产一区91精品张津瑜| 国产精品每日更新| 欧美放荡的少妇| 99国产精品久| 国产成人免费视频网站高清观看视频| 日本一区免费视频| 精品粉嫩超白一线天av| 色哟哟国产精品| 激情欧美一区二区三区在线观看| 国产日本欧洲亚洲| 91精品国产欧美一区二区成人| 成人h动漫精品一区二区| 亚洲成人一区在线| 一区二区日韩av| 一区二区三区精密机械公司| 国产三级精品三级| 欧美一级黄色录像| 日韩免费高清电影| 精品国产a毛片| 久久久精品tv| 日本一区二区三区久久久久久久久不 | 久久成人麻豆午夜电影| 久久国产精品无码网站| 国产在线视频一区二区三区| 狠狠色伊人亚洲综合成人| 精品中文字幕一区二区小辣椒| 日韩**一区毛片| 成人18视频在线播放| 精品视频免费看| 久久网这里都是精品| 亚洲六月丁香色婷婷综合久久 | 午夜精品久久久久久久| 国产成人免费网站| 678五月天丁香亚洲综合网| 国产亚洲精品7777| 日韩av一级片| 欧美日韩国产综合视频在线观看| 精品国产污网站| 香蕉加勒比综合久久| a级高清视频欧美日韩| 日韩亚洲欧美综合| 日韩精品每日更新| 在线不卡的av| 亚洲国产成人精品视频| 成人性生交大片免费看中文 | 日韩欧美成人激情| 日本不卡一二三区黄网| 欧美电影在线免费观看| 午夜精品福利一区二区蜜股av| 日本成人中文字幕在线视频| 99精品欧美一区二区蜜桃免费 | 亚洲丝袜制服诱惑| 色综合视频一区二区三区高清| 国产精品午夜春色av| 91片黄在线观看| 久久电影国产免费久久电影| 久久久久亚洲综合| 欧美视频一区二区三区| 另类小说图片综合网| 中文成人av在线| 欧美一区二区三区喷汁尤物| 国产麻豆精品久久一二三| 亚洲精品国产品国语在线app| 欧美一区二区三区白人| 99视频一区二区| 蜜桃久久av一区| 亚洲国产欧美在线人成| 欧美精彩视频一区二区三区| 欧美老肥妇做.爰bbww| 一本色道久久加勒比精品 | 国产麻豆91精品| 精品无码三级在线观看视频| 三级欧美韩日大片在线看| 亚洲午夜一区二区三区| 亚洲女人小视频在线观看| 中文字幕一区av| 国产丝袜欧美中文另类| 日韩一卡二卡三卡四卡| 欧美精品1区2区| 精品日产卡一卡二卡麻豆| 日韩欧美区一区二| 精品粉嫩超白一线天av| 久久精品视频免费| 日韩美女啊v在线免费观看| 亚洲欧美在线高清| 亚洲免费在线看| 麻豆精品视频在线观看免费| 美女久久久精品| 国产a精品视频| 欧美夫妻性生活| 亚洲日本在线看| 美女诱惑一区二区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 欧美a一区二区| 欧美综合色免费| 国产精品狼人久久影院观看方式| 亚洲欧美激情在线| 国产精品1区2区3区在线观看| 成人黄色国产精品网站大全在线免费观看 | 亚洲女人小视频在线观看| 极品少妇xxxx精品少妇| 6080国产精品一区二区| 亚洲同性同志一二三专区| 黄色精品一二区| 欧美tickle裸体挠脚心vk| 婷婷成人综合网| 日韩一区二区三区在线| 水蜜桃久久夜色精品一区的特点| 国产 欧美在线| 国产精品传媒入口麻豆| 成人av在线电影| 欧美极品少妇xxxxⅹ高跟鞋| 国产精品一级黄| 亚洲欧洲另类国产综合| 91视视频在线观看入口直接观看www | 国产精品亚洲午夜一区二区三区 | 国产一区二区三区久久悠悠色av| 精品日韩欧美在线| www.欧美亚洲| 午夜精品视频在线观看| 日韩欧美一级特黄在线播放| 精品一区二区国语对白| 国产精品福利一区二区三区| 91小宝寻花一区二区三区| 亚洲国产成人av网| 国产亚洲欧美一级| 欧美群妇大交群的观看方式| 极品尤物av久久免费看| 亚洲成a人v欧美综合天堂下载| 精品欧美一区二区在线观看| 在线观看av不卡| 欧美日韩另类一区| 精品视频1区2区| 欧美一区二区久久久| 欧美日韩国产系列|