-
Notifications
You must be signed in to change notification settings - Fork 0
PT BR FastEndpoints
Offside.FastEndpoint é o único pacote Offside que referencia FastEndpoints. Falhas de validação e falhas de Result viram o mesmo documento OffsideProblem.
dotnet add package Offside
dotnet add package Offside.AspNetCore
dotnet add package Offside.FastEndpointTargets: net8.0, net10.0. Depende diretamente de FastEndpoints 8.3.0. No grafo restaurado com lock, FastEndpoints traz FluentValidation 12.1.1 transitivamente; esta é a versão efetiva mesmo que Offside.FluentValidation declare 11.11.0 diretamente.
builder.Services.AddOffside(options => { /* catálogos */ });
builder.Services.AddOffsideAspNetCore();
builder.Services.AddFastEndpoints();
app.UseFastEndpoints(c => c.UseOffside());UseOffside faz quatro coisas:
- Define
Errors.ResponseBuilderpara serializar falhas FluentValidation comoOffsideProblem. - Define
Errors.ProducesMetadataTypecomotypeof(OffsideProblem). - Define
Errors.ContentTypecomoapplication/problem+json. - Regista
Produces<OffsideProblem>para cada status Offside (400, 401, 403, 404, 409, 410, 412, 422, 429, 500) em todos os endpoints.
O FastEndpoints não expõe o Endpoints.Configurator anterior a outros assemblies. Se já tiver um, passe-o:
app.UseFastEndpoints(c => c.UseOffside(ep =>
{
ep.AllowAnonymous();
}));Não atribua c.Endpoints.Configurator depois de UseOffside — isso substitui os metadados Offside.
Health e outros endpoints que não devem anunciar status de erro Offside:
public override void Configure()
{
Get("/health");
Definition.DontProduceOffside();
}public override Task HandleAsync(CancellationToken ct) =>
orders.Get(id).SendOffsideAsync(HttpContext, ct);Sucesso é 204 para Result e 200 com o valor para Result<T>. Falha é o documento de problema Offside habitual.
O parâmetro CancellationToken existe para combinar com as assinaturas de handlers FastEndpoints, mas SendOffsideAsync o ignora. Cancelar ct não cancela a escrita delegada por ToHttpResult(...).ExecuteAsync(...).
Use .WithErrorCode("email.required") para a chave do catálogo (Error.Code). O identificador de tela desses erros é VALIDATION. Ver FluentValidation.
Código e docs/ são canônicos · Code and docs/ are canonical · Base dbca345372483477097385eb43d850484b00ec13 · 2026-08-22 · Repositório / Repository