FastEndpoints:轻量级、高性能的ASP.NET Core Web API开发框架

对于在.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 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 -

推荐阅读

CsvHelper:一个轻便高性能的Csv文件读写操作开源库!

TheAlgorithms/C-Sharp:一个包含上百个C#算法示例代码的开源库

AutoFixture:.NET 的假数据生成工具

FluentAssertions:C#单元测试断言库,让测试代码更加直观、易读!

2个支持大文件上传.Net开源项目

  • 40
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程乐趣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值