对于在.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 」,免费领取
推荐阅读
觉得好看 点个在看👇