DEV Community

Cristiano Rodrigues for Unhacked

Posted on

2 1

Explorando o Carter: Um Framework Simples e Eficaz para APIs em .NET

Nos últimos anos, o desenvolvimento de APIs em .NET tem evoluído significativamente. Frameworks e bibliotecas surgiram para simplificar o processo de criação de APIs RESTful e fornecer maneiras mais eficientes de lidar com solicitações HTTP. Um desses frameworks é o Carter, uma biblioteca minimalista, mas poderosa, para criação de APIs em ASP.NET Core. Neste artigo, exploraremos o que é o Carter, suas vantagens e como começar a usá-lo em seus projetos.

Recentemente fiz uma contribuição para o projeto, permitindo definir o tempo de vida dos registros dos validadores do FluentValidation, que por padrão são registrados como Singleton. Esse ajuste permitiu que o validadores que tenham dependências diferentes de Singleton pudessem ser utilizadas pelo Carter evitando erros de registro.

O que é o Carter?

O Carter é um framework para desenvolvimento de APIs em ASP.NET Core que se destaca por sua simplicidade e eficácia. Ele permite que você defina rotas e manipuladores de solicitações HTTP de maneira elegante e direta, sem a necessidade de controladores complexos.

Vantagens do Carter

O Carter oferece várias vantagens que podem ser atraentes para desenvolvedores que desejam criar APIs em .NET de maneira eficiente:

1. Sintaxe Simples e Declarativa

Uma das principais vantagens do Carter é sua sintaxe simples e declarativa. Você define rotas e manipuladores em um estilo fácil de ler, tornando seu código mais legível e compreensível.

using Carter;
using Carter.OpenApi;

namespace DemoCarter;

public class Module : CarterModule
{
    public Module()
    {
        WithTags("Module");
    }
    public override void AddRoutes(IEndpointRouteBuilder app)
    {
        app.MapGet("/", () =>
        {
            return "Hello Carter!";
        })
        .IncludeInOpenApi()
        .RequireAuthorization();
    }
}
Enter fullscreen mode Exit fullscreen mode

2. Independência de Controladores

Diferentemente do ASP.NET Core MVC, que depende de controladores para lidar com as solicitações, o Carter não requer controladores. Isso pode simplificar a estrutura do seu projeto, tornando-o mais direto e muito útil em aplicações com minimal APIs.

3. Baixo Acoplamento

O Carter promove o baixo acoplamento entre os componentes, o que facilita a manutenção e a escalabilidade do código. Você pode criar manipuladores independentes e reutilizáveis sem se preocupar com a complexidade de controladores.

4. Suporte para Middlewares e Extensions

Apesar de sua simplicidade, o Carter ainda se integra bem com os middlewares do ASP.NET Core. Isso significa que você pode adicionar facilmente funcionalidades como autenticação, autorização e log de solicitações às suas APIs.

Outra forma é a utilização de Extensions como o FluentValidation que permite validar solicitações de entrada HTTP em minimal APIs do ASP.NET Core.

5. Boa Performance

A simplicidade do Carter não compromete o desempenho. Ele oferece uma ótima performance em comparação com outras estruturas.

6. Testabilidade

A simplicidade do Carter torna mais fácil escrever testes unitários para seus manipuladores de rota, garantindo a qualidade do código.

Como Começar com o Carter

Agora que você conhece algumas das vantagens do Carter, talvez esteja se perguntando como começar a usá-lo em seus projetos ASP.NET Core. Aqui estão algumas etapas simples para começar:

  1. Instalação: Você pode adicionar o pacote Carter ao seu projeto usando o NuGet Package Manager. Execute o seguinte comando no console do NuGet:
   dotnet add package Carter
Enter fullscreen mode Exit fullscreen mode
  1. Definindo Módulos: Crie módulos Carter que herdam de CarterModule para definir suas rotas e manipuladores.
using Carter;
using Carter.OpenApi;

namespace DemoCarter;

public class Module : CarterModule
{
    public Module()
    {
        WithTags("Module");
    }
    public override void AddRoutes(IEndpointRouteBuilder app)
    {
        app.MapGet("/", () =>
        {
            return "Hello Carter!";
        })
        .IncludeInOpenApi()
        .RequireAuthorization();
    }
}
Enter fullscreen mode Exit fullscreen mode
  1. Configuração: Adicione o Carter ao pipeline da aplicação.
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

builder.Services.AddCarter();
Enter fullscreen mode Exit fullscreen mode
  1. Uso: Use os módulos que você criou em sua aplicação.
var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.MapCarter();

app.Run();

Enter fullscreen mode Exit fullscreen mode

Agora, você está pronto para começar a criar suas APIs RESTful com o Carter!

Conclusão

O Carter é uma escolha sólida para o desenvolvimento de APIs em .NET quando você valoriza simplicidade, desempenho e um código limpo e de fácil manutenção. Ele oferece uma abordagem elegante para lidar com solicitações HTTP sem a complexidade dos controladores do ASP.NET Core MVC e a confusão das minimal APIs. Considere usar o Carter em seus projetos, avalie suas necessidades específicas e se suas vantagens se alinham com os objetivos do seu aplicativo. Com o Carter, você pode criar APIs eficientes e fáceis de manter em .NET.

Para saber mais:
Carter Github

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay