對於在.Net中搭建API系統,我們一般是使用MVC的模式。但隨著功能越來越多,控制器會越來越臃腫。
而FastEndpoints就為我們提供一種更加靈活、輕便的Web API處理方式,可以將每個控制器方法的垂直切割。
01
計畫簡介
FastEndpoints是基於REPR設計模式(請求-端點-響應)的Web API框架,它旨在減少開發程式碼量,提升開發效率。
與傳統的ASP.NET Core Web API相比,FastEndpoints透過行內處理常式和直接的數據存取,大大簡化了開發流程。
該框架不僅支持中介軟體、認證、授權、日誌和依賴註入等常用功能,而且在效能上表現優異,效能與Minimal API不相上下。它比我們的基準測試中的MVC控制器更快,使用更少的記憶體,每秒處理大約35k個請求。
FastEndpoints可以很好的替換Minimal API和MVC。
02
框架核心功能
1、職場 在多個類檔中定義端點(即使在深度巢狀的資料夾中)
2、 端點可自動發現和註冊
3、支持 無內容的端點定義(無內容參數型別限制)
4、 預設安全並支持大多數認證提供商
5、 內建支持JWT Bearer認證方案
6、 支持基於策略/許可權/角色/聲明的安全性
7、聲明性安全策略構建(在每個端點內)
8、 支持任何與ASP.NET相容的IOC容器
9、 端點依賴項的建構函式和內容註入
10、 從路由/查詢/JSON體/聲明/表單/頭資訊中輕松繫結模型
11、 支持 對請求/響應DTO的Json原始碼生成器
12、 簡易的檔處理(multipart/form-data)
13、 使用FluentValidation規則的模型驗證
14、方便的業務邏輯驗證和錯誤響應
15、可快速 存取環境和配置設定
16、API版本控制
17、 速率限制
18、支持響應緩存
19、行程內釋出/訂閱事件通知(帶自動發現)
20、用於即時數據流的簡易伺服器發送事件
21、 方便的整合測試(無路由且強型別)
22、 內建未捕獲例外處理程式
23、支持swagger/serilog等
24、 Visual Studio擴充套件(vsix),用於簡單的垂直切片功能腳手架
25、 與ASP.NET中介軟體管道支持良好
26、 以及Minimal APIs可以做的任何其他事情...
03
使用方法
1、安裝並初始化
dotnet new web -n MyWebApp
cd MyWebApp
dotnet add package FastEndpoints
2、計畫啟動
修改Program.cs,完整程式碼如下:
using FastEndpoints;
var bld = WebApplication.CreateBuilder();
bld.Services.AddFastEndpoints();
var app = bld.Build();
app.UseFastEndpoints();
app.Run();
3、定義請求和返回物件DTO
namespace MyWebApp.DTO
{
public class UserRequest
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
}
namespace MyWebApp.DTO
{
public class UserResponse
{
public string FullName { get; set; }
public bool IsOver18 { get; set; }
}
}
4、定義端點並實作業務
using FastEndpoints;using MyWebApp.DTO;
namespace MyWebApp.Endpoint
{
public class UserEndpoint : Endpoint<UserRequest, UserResponse>
{
public override void Configure()
{
Post("/api/user/create");
AllowAnonymous();
}
public override async Task HandleAsync(UserRequest req, CancellationToken ct)
{
await SendAsync(new()
{
FullName = req.FirstName + " " + req.LastName,
IsOver18 = req.Age > 18
});
}
}
}
5、請求和返回結果
測試效果如下:
04
計畫地址
https://github.com/FastEndpoints/FastEndpoints
- End -
分享一套.NetCore從入門到精通視訊教程
點選下方公眾號卡片,關註我
回復「 888 」,免費領取
推薦閱讀
覺得好看 點個在看👇