FastEndpoints para C# (.NET): guía completa con ejemplos prácticos
FastEndpoints es una biblioteca moderna y de alto rendimiento para crear APIs web en la plataforma .NET (ASP.NET Core) que implementa el patrón REPR (Request-Endpoint-Response). A diferencia del enfoque tradicional MVC (Model-View-Controller) o las Minimal API, FastEndpoints ofrece una arquitectura más limpia, modular y fácil de probar, donde cada endpoint es una clase independiente responsable de procesar una solicitud específica.
¿Para qué sirve esta biblioteca? En proyectos grandes con decenas o cientos de endpoints, los controladores tradicionales se convierten rápidamente en "objetos divinos" con lógica inflada. FastEndpoints resuelve este problema obligando al desarrollador a separar responsabilidades de forma explícita: una clase, un endpoint. Esto simplifica el mantenimiento, las pruebas y la reutilización del código. Además, la biblioteca está construida sobre System.Text.Json nativo y optimizada para máximo rendimiento, lo que la convierte en una de las más rápidas para crear APIs en el ecosistema .NET.
FastEndpoints es ideal para arquitecturas de microservicios, proyectos con Domain-Driven Design (DDD) y Clean Architecture. Ofrece validación integrada (mediante FluentValidation), soporte para Swagger/OpenAPI, manejo de errores, almacenamiento en caché, versionado de endpoints y mucho más, eliminando la necesidad de escribir código repetitivo.
Instalación
FastEndpoints se instala a través de NuGet. Necesitas .NET SDK 6.0 o superior. Ejecuta uno de los siguientes comandos en la terminal:
dotnet add package FastEndpoints
Para integrar con Swagger (opcional, pero recomendado):
dotnet add package FastEndpoints.Swagger
Para usar FluentValidation (recomendado):
dotnet add package FluentValidation
Inicio rápido — ejemplo mínimo funcional
Crea un nuevo proyecto ASP.NET Core Web API (vacío o con controladores, no importa, ya que usaremos FastEndpoints).
Paso 1: Configurar Program.cs
using FastEndpoints;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddFastEndpoints(); // Registramos los servicios de FastEndpoints
var app = builder.Build();
app.UseFastEndpoints(); // Conectamos el middleware
app.Run();
Paso 2: Crear un endpoint
Crea una carpeta Endpoints y dentro de ella un archivo HelloEndpoint.cs:
using FastEndpoints;
namespace MyApi.Endpoints;
public class HelloEndpoint : Endpoint<EmptyRequest, string>
{
public override void Configure()
{
Get("/api/hello"); // Método HTTP GET en /api/hello
AllowAnonymous(); // Accesible sin autenticación
}
public override async Task HandleAsync(EmptyRequest req, CancellationToken ct)
{
await SendAsync("¡Hola, Mundo!", cancellation: ct);
}
}
Paso 3: Ejecutar
Ejecuta la aplicación (dotnet run) y abre el navegador en http://localhost:5000/api/hello. Verás la respuesta: ¡Hola, Mundo!
Clases y métodos principales
A continuación se presentan las clases y métodos clave de la biblioteca FastEndpoints con ejemplos de uso.
1. Clase Endpoint<TRequest, TResponse>
Firma: public abstract class Endpoint<TRequest, TResponse> : BaseEndpoint where TRequest : notnull, new()
Qué hace: Clase base para crear un endpoint. Acepta un tipo de solicitud (TRequest) y un tipo de respuesta (TResponse).
Ejemplo:
public class CreateUserEndpoint : Endpoint<CreateUserRequest, Us