Carter es una biblioteca de C# diseñada para facilitar el enrutamiento en aplicaciones ASP.NET Core.
Esta biblioteca busca simplificar la creación de API RESTful mediante una configuración más fluida y una estructura más organizada, eliminando la necesidad de escribir un código de enrutamiento repetitivo y verboso.
Principales características,
- Modularidad: Permite agrupar rutas y lógica de controladores en módulos, facilitando la organización del código.
- Simplicidad: Reduce la cantidad de código necesario para definir rutas y controladores.
- Integración con ASP.NET Core: Funciona de manera fluida con la infraestructura de ASP.NET Core y el middleware.
Para obtener más detalles sobre Carter, explora el repositorio en GitHub, donde encontrarás documentación adicional y ejemplos de uso.
Instalación y Configuración
Para comenzar a utilizar Carter en tu proyecto ASP.NET Core, instalamos el paquete NuGet de Carter utilizando la CLI de .NET:
Install-Package Carter
Alternativamente, puedes agregar el paquete mediante el Administrador de Paquetes NuGet en Visual Studio.
Cómo Usar Carter
Configuración
En primer lugar, en el archivo Startup.cs
, debes configurar los servicios y el middleware para utilizar Carter. Asegúrate de agregar el servicio de Carter en el método ConfigureServices
y configurar el enrutamiento en el método Configure
.
using Carter;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCarter();
var app = builder.Build();
app.MapCarter();
app.Run();
public class HomeModule : ICarterModule
{
public void AddRoutes(IEndpointRouteBuilder app)
{
app.MapGet("/", () => "Hello from Carter!");
}
}
Este fragmento de código define un módulo HomeModule que implementa la interfaz ICarterModule. Dentro del método AddRoutes, se configura una ruta GET en la raíz del sitio (”/”), que devuelve el mensaje “Hello from Carter!“.
Si ejecutas la aplicación y abres la dirección localhost
Definir un Módulo
Carter simplifica la definición de rutas y controladores al permitirte agruparlos en módulos. Un módulo en Carter es una clase que hereda de CarterModule
. Puedes definir rutas y lógica de controladores dentro de este módulo.
// Modules/ProductModule.cs
public class ProductModule : ICarterModule
{
public void AddRoutes(IEndpointRouteBuilder app)
{
app.MapGet("/products", async (HttpRequest req) =>
{
var products = new[]
{
new { Id = 1, Name = "Product 1", Price = 10.0 },
new { Id = 2, Name = "Product 2", Price = 20.0 }
};
return products;
});
app.MapGet("/qs", async (HttpRequest req) =>
{
var ids = req.Query.AsMultiple<int>("ids");
return $"It's {string.Join(",", ids)}";
});
}
}
Dentro de este método, se definen dos rutas:
- Ruta
/products
: Esta ruta maneja solicitudes GET a /products y devuelve una lista de productos en formato JSON. - Ruta
/qs
: Esta ruta maneja solicitudes GET a /qs y recupera múltiples valores de una consulta (query string) llamada ids. Luego, devuelve esos valores en una cadena separada por comas.