當前位置: 妍妍網 > 碼農

FastEndpoints:輕量級、高效能的ASP.NET Core Web API開發框架

2024-06-19碼農

對於在.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 MyWebAppcd MyWebAppdotnet 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 」,免費領取

推薦閱讀

覺得好看 點個在看👇