Offside

FastEndpoints

English · Voltar à docs

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.FastEndpoint

Targets: net8.0, net10.0. Exige FastEndpoints 8.3 ou superior.

Registro

builder.Services.AddOffside(options => { /* catálogos */ });
builder.Services.AddOffsideAspNetCore();
builder.Services.AddFastEndpoints();

app.UseFastEndpoints(c => c.UseOffside());

UseOffside faz quatro coisas:

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.

Opt-out

Health e outros endpoints que não devem anunciar status de erro Offside:

public override void Configure()
{
    Get("/health");
    Definition.DontProduceOffside();
}

Enviar um Result

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.

FluentValidation

Use .WithErrorCode("email.required") para a chave do catálogo (Error.Code). O identificador de tela desses erros é VALIDATION. Ver FluentValidation.

AddError / ThrowError sem propriedade no FastEndpoints definem PropertyName como GeneralErrorsField (default "GeneralErrors"). O Offside trata isso como erro sem campo (field: null). Validação de classe do FluentValidation (PropertyName vazio) segue o mesmo caminho. Com LegacyAliases ligado, errors[].name é "generalErrors", não "GeneralErrors".