![]() |
VOOZH | about |
dotnet add package AlefCarlos.AspNetCoreDefaults.WebApi --version 1.1.5
NuGet\Install-Package AlefCarlos.AspNetCoreDefaults.WebApi -Version 1.1.5
<PackageReference Include="AlefCarlos.AspNetCoreDefaults.WebApi" Version="1.1.5" />
<PackageVersion Include="AlefCarlos.AspNetCoreDefaults.WebApi" Version="1.1.5" />Directory.Packages.props
<PackageReference Include="AlefCarlos.AspNetCoreDefaults.WebApi" />Project file
paket add AlefCarlos.AspNetCoreDefaults.WebApi --version 1.1.5
#r "nuget: AlefCarlos.AspNetCoreDefaults.WebApi, 1.1.5"
#:package AlefCarlos.AspNetCoreDefaults.WebApi@1.1.5
#addin nuget:?package=AlefCarlos.AspNetCoreDefaults.WebApi&version=1.1.5Install as a Cake Addin
#tool nuget:?package=AlefCarlos.AspNetCoreDefaults.WebApi&version=1.1.5Install as a Cake Tool
Biblioteca de convenções e extensões para padronizar Web APIs ASP.NET Core (OpenAPI, ProblemDetails, health checks, logging e OpenTelemetry).
Fornecer um conjunto mínimo e opinativo de defaults para projetos Web API, facilitando:
Microsoft.AspNetCore.OpenApi + Scalar.AspNetCore)ProblemDetailsWebApplicationBuilder AddWebApiDefaults(this WebApplicationBuilder builder)
AddDefaults() (telemetria, health checks, logging, service discovery)ProblemDetailsOpenApiInfo a partir de ApplicationMetadataOpenApiInfoTransformer)void UseProblemDetailsWithDefaults(this WebApplication app)
UseExceptionHandler() e UseStatusCodePages()UseDeveloperExceptionPage() em DevelopmentWebApplication MapDefaultWebApiEndpoints(this WebApplication app)
/health, /alive, /app-infoMapOpenApi()) e referência de API (MapScalarApiReference("/docs"))WebApplication MapDefaultEndpoints(this WebApplication app) (do pacote base)
/health → readiness (todos checks)/alive → liveness (apenas checks com tag "live")GET /app-info → retorna ApplicationMetadata (excluído da documentação via ExcludeFromDescription())OpenApiInfo é exposto via IOptions<OpenApiInfo>; o pacote registra um IConfigureOptions<OpenApiInfo> que popula Title e Version automaticamente a partir de ApplicationMetadata.OpenApiInfo via DIOpenApiInfo registrando sua própria configuração com services.Configure<OpenApiInfo>(...). As configurações são aplicadas quando o documento OpenAPI é gerado.// Exemplo: adicionar descrição e contato
builder.Services.Configure<OpenApiInfo>(opts =>
{
opts.Description = "Descrição detalhada da API";
opts.Contact = new OpenApiContact { Name = "Equipe X", Email = "team@example.com" };
});
O OpenApiInfoTransformer atribui document.Info = options.Value, portanto quaisquer propriedades definidas via Configure<OpenApiInfo> aparecerão na documentação.
A documentação pública fica disponível em /docs (usando Scalar.AspNetCore)
AddHttpLoggingDefaults() habilita HttpLogging com campos: request/response + headers + duration e CombineLogs = true.FilterRequestLoggingInterceptor reduz logs (define HttpLoggingFields.None) para endpoints que expõem dados sensíveis: /metrics, /env, /health, /alive, /docs, /swagger.app.UseHttpLogging() no pipeline quando apropriado (ex.: em staging/production conforme níveis de log).OTEL_SERVICE_NAME (variável de ambiente) sobrescreve o ApplicationName usado como fonte de traces.OTEL_EXPORTER_OTLP_ENDPOINT; quando presente o exporter OTLP é registrado automaticamente.AddDefaultHealthChecks() adiciona o check self (tagged live) que garante liveness por padrão.IHealthChecksBuilder com tags apropriadas.O builder.Authentication expõe um AuthenticationDefaultsBuilder que facilita a configuração de autenticação com suporte a múltiplos esquemas.
dotnet-user-jwts (desenvolvimento)builder.Authentication
.AddJwtBearerDefaults();
Em Development, o método registra o esquema JWT Bearer com o scheme dotnet-user-jwts e define-o como padrão. Após o registro, gere tokens de teste com:
dotnet user-jwts create --scheme dotnet-user-jwts
O --scheme é necessário para que a ferramenta crie a infraestrutura de user-secrets associada ao scheme correto.
O AuthenticationDefaultsBuilder.Schemes é um AuthenticationBuilder — você pode registrar outros esquemas livremente:
builder.Authentication
.AddJwtBearerDefaults()
.Schemes.AddCookie("my-cookie")
.Schemes.AddJwtBearer("external", opts => { /* ... */ });
dotnet user-jwtsBearer) gerada automaticamenteMultiSchemeAuthorizationPolicyProvider inclui o scheme dotnet-user-jwts em todas as políticas de autorização automaticamentevar builder = WebApplication.CreateBuilder(args);
// Configura defaults opinativos para WebApi (telemetria, logging, health checks, OpenAPI)
builder.AddWebApiDefaults();
builder.Authentication
.AddJwtBearerDefaults();
builder.Services.AddAuthorization();
// Personalize OpenAPI se desejar
builder.Services.Configure<OpenApiInfo>(opts => opts.Description = "Descrição detalhada da API");
var app = builder.Build();
app.UseHttpLogging();
app.UseProblemDetailsWithDefaults();
app.UseAuthentication();
app.UseAuthorization();
app.MapGet("/", () => new { Message = "Hello, World!" }).WithName("HelloWorld");
// Mapeia endpoints padrão + OpenAPI + docs
app.MapDefaultWebApiEndpoints();
app.Run();
Este projeto adota o Result Pattern usando a biblioteca Ardalis.Result (e o pacote Ardalis.Result.AspNetCore) para padronizar retornos de operações e facilitar a tradução para respostas HTTP sem lançar exceções para fluxos esperados.
Ardalis.Result e Ardalis.Result.AspNetCore nas dependências (veja Directory.Packages.props / metapacote).Minimal API endpoint (exemplo simplificado):
app.MapPost("/todos", async (IMediator mediator, CreateTodoRequest request) =>
{
var result = await mediator.Send(new CreateTodoCommand(request.Name));
return result.ToCreatedResult();
});
Handler (use case) retornando Result:
public class CreateTodoHandler : ICommandHandler<CreateTodoCommand, Result>
{
public async ValueTask<Result> Handle(CreateTodoCommand command, CancellationToken cancellationToken)
{
// lógica de criação
return Result.Success();
}
}
src/AlefCarlos.AspNetCoreDefaults.WebApi ou ao metapacote src/metapackages/AlefCarlos.AspNetCoreDefaults.WebApi.All.builder.AddWebApiDefaults() na construção da aplicação e app.MapDefaultWebApiEndpoints() no pipeline.samples/webapi-default.cs exemplifica a integração completa. Use dotnet run e verifique /health, /alive, /app-info e /docs.samples/webapi-default.run.json contém variáveis de ambiente úteis (ASPNETCORE_ENVIRONMENT=Development, OTEL_SERVICE_NAME=sample-api).appsettings.*.json para controlar dados sensíveis em produção.| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 2 NuGet packages that depend on AlefCarlos.AspNetCoreDefaults.WebApi:
| Package | Downloads |
|---|---|
|
AlefCarlos.AspNetCoreDefaults.WebApi.All
Package Description |
|
|
AlefCarlos.AspNetCore.WebApi
Package Description |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.5 | 143 | 6/2/2026 |
| 1.1.4 | 114 | 6/1/2026 |
| 1.1.3 | 116 | 5/31/2026 |
| 1.1.2 | 145 | 5/29/2026 |
| 1.1.1 | 106 | 5/28/2026 |
| 1.1.0 | 119 | 5/28/2026 |
| 1.0.4 | 140 | 5/21/2026 |
| 1.0.3 | 136 | 4/25/2026 |
| 1.0.2 | 108 | 4/16/2026 |
| 1.0.1 | 210 | 12/26/2025 |
| 1.0.0 | 209 | 12/24/2025 |
| 0.0.1-rc8 | 199 | 12/24/2025 |
| 0.0.1-rc7 | 196 | 12/24/2025 |
| 0.0.1-rc6 | 206 | 12/24/2025 |