FastEndpoints C# (.NET) 完整教程:方法、安装与实战指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

FastEndpoints C# (.NET) 完整教程:方法、安装与实战指南

FastEndpoints 是一个现代化、高性能的 .NET (ASP.NET Core) Web API 构建库,实现了 REPR(Request-Endpoint-Response)模式。与传统的 MVC(Model-View-Controller)或 Minimal API 不同,FastEndpoints 提供了更清晰、模块化且易于测试的架构——每个端点都是一个独立的类,专门处理一个特定的请求。

为什么需要这个库?在拥有数十甚至数百个端点的大型项目中,传统控制器很容易变成逻辑臃肿的"上帝对象"。FastEndpoints 通过强制开发者明确分离职责(一个类 = 一个端点)解决了这个问题,从而简化了维护、测试和代码复用。此外,该库基于原生 System.Text.Json 构建,并针对最大性能进行了优化,使其成为 .NET 生态系统中构建 API 最快的库之一。

FastEndpoints 非常适合微服务架构、领域驱动设计(DDD)和整洁架构(Clean Architecture)项目。它提供内置验证(通过 FluentValidation)、Swagger/OpenAPI 支持、错误处理、缓存、端点版本控制等功能,让开发者无需编写大量样板代码。

安装

FastEndpoints 通过 NuGet 安装。你需要 .NET SDK 6.0 或更高版本。在终端中执行以下任一命令:

dotnet add package FastEndpoints

如需集成 Swagger(可选但推荐):

dotnet add package FastEndpoints.Swagger

如需使用 FluentValidation(推荐):

dotnet add package FluentValidation

快速入门——最小工作示例

创建一个新的 ASP.NET Core Web API 项目(空项目或带控制器的项目均可——我们仍将使用 FastEndpoints)。

步骤 1:配置 Program.cs

using FastEndpoints;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddFastEndpoints(); // 注册 FastEndpoints 服务

var app = builder.Build();
app.UseFastEndpoints(); // 连接中间件
app.Run();

步骤 2:创建端点

创建一个 Endpoints 文件夹,并在其中创建 HelloEndpoint.cs 文件:

using FastEndpoints;

namespace MyApi.Endpoints;

public class HelloEndpoint : Endpoint<EmptyRequest, string>
{
    public override void Configure()
    {
        Get("/api/hello"); // HTTP GET 方法,路由为 /api/hello
        AllowAnonymous();  // 无需授权即可访问
    }

    public override async Task HandleAsync(EmptyRequest req, CancellationToken ct)
    {
        await SendAsync("Hello, World!", cancellation: ct);
    }
}

步骤 3:运行

启动应用程序(dotnet run),然后在浏览器中打开 http://localhost:5000/api/hello。你将看到响应:Hello, World!

核心类与方法

以下是 FastEndpoints 库的关键类和方法及其使用示例。

1. Endpoint<TRequest, TResponse> 类

签名: public abstract class Endpoint<TRequest, TResponse> : BaseEndpoint where TRequest : notnull, new()

功能: 创建端点的基类。接受请求类型(TRequest)和响应类型(TResponse)。

示例:

public class CreateUserEndpoint : Endpoint<CreateUserRequest, Us

推荐