Fcg.Core.Abstractions.Application
1.0.0
dotnet add package Fcg.Core.Abstractions.Application --version 1.0.0
NuGet\Install-Package Fcg.Core.Abstractions.Application -Version 1.0.0
<PackageReference Include="Fcg.Core.Abstractions.Application" Version="1.0.0" />
<PackageVersion Include="Fcg.Core.Abstractions.Application" Version="1.0.0" />
<PackageReference Include="Fcg.Core.Abstractions.Application" />
paket add Fcg.Core.Abstractions.Application --version 1.0.0
#r "nuget: Fcg.Core.Abstractions.Application, 1.0.0"
#:package Fcg.Core.Abstractions.Application@1.0.0
#addin nuget:?package=Fcg.Core.Abstractions.Application&version=1.0.0
#tool nuget:?package=Fcg.Core.Abstractions.Application&version=1.0.0
Fcg.Core.Abstractions.Application
Pacote com as abstrações da camada de aplicação compartilhadas entre os microsserviços do ecossistema Fiap Cloud Games (FCG).
🎯 Objetivo
Padronizar comportamentos transversais (cross-cutting concerns) do pipeline de aplicação, evitando que cada microsserviço reimplemente a mesma lógica. Hoje o foco é a validação automática de requests do MediatR antes que eles cheguem aos handlers.
📦 Conteúdo do Pacote
| Tipo | Descrição |
|---|---|
ValidationBehavior<TRequest, TResponse> |
IPipelineBehavior do MediatR que executa todos os IValidator<TRequest> registrados no contêiner de DI e lança ValidationException (FluentValidation) quando há falhas. |
Namespace: Fcg.Core.Abstractions.Application
Como funciona
- O behavior recebe, via DI, todos os
IValidator<TRequest>registrados para o request. - Se não houver nenhum validator, o pipeline segue direto para o handler.
- Havendo validators, todos são executados em paralelo (
Task.WhenAll). - As falhas de todos os validators são agregadas em uma única
ValidationException. - Sem falhas, o handler é invocado normalmente.
Combinado com o ExceptionMiddleware do pacote Fcg.Core.WebApi, essa exceção é traduzida automaticamente em uma resposta 400 Bad Request no formato ValidationProblemDetails, com os erros agrupados por propriedade e um traceId na extensão.
🔗 Dependências
- .NET 9.0
- MediatR
14.2.0 Fcg.Core.WebApi(que trazFluentValidatione, transitivamente,Fcg.Core.Abstractions)
🚀 Como Instalar
.NET CLI
dotnet add package Fcg.Core.Abstractions.Application
Package Manager
Install-Package Fcg.Core.Abstractions.Application
💻 Exemplo de Uso
1. Registrar o behavior no pipeline do MediatR
using Fcg.Core.Abstractions.Application;
using FluentValidation;
using MediatR;
builder.Services.AddMediatR(cfg =>
{
cfg.RegisterServicesFromAssembly(typeof(CriarJogoCommand).Assembly);
cfg.AddOpenBehavior(typeof(ValidationBehavior<,>));
});
// Registra todos os validators do assembly
builder.Services.AddValidatorsFromAssembly(typeof(CriarJogoCommandValidator).Assembly);
A ordem importa: o
ValidationBehaviorroda na ordem em que os behaviors são adicionados ao pipeline.
2. Criar o command e seu validator
public record CriarJogoCommand(string Nome, decimal Preco) : IRequest<Guid>;
public class CriarJogoCommandValidator : AbstractValidator<CriarJogoCommand>
{
public CriarJogoCommandValidator()
{
RuleFor(x => x.Nome).NotEmpty().MaximumLength(100);
RuleFor(x => x.Preco).GreaterThan(0);
}
}
3. Resultado
O handler só é executado com um request válido. Caso contrário, a API responde:
{
"title": "Um ou mais erros de validação ocorreram.",
"status": 400,
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"instance": "/api/jogos",
"traceId": "00-...",
"errors": {
"Nome": ["'Nome' não pode ser vazio."],
"Preco": ["'Preco' deve ser maior que 0."]
}
}
📚 Pacotes Relacionados
- Fcg.Core.Abstractions — abstrações de domínio (
EntityBase,AggregateRoot,ValueObject,PagedResult, exceções). - Fcg.Core.WebApi — extensões de Web API (JWT,
ExceptionMiddleware, responses padronizadas). - Fcg.Core.SharedContracts — contratos de eventos de integração entre os microsserviços.
🤝 Como Contribuir
Consulte as diretrizes de contribuição no repositório principal: Repositório no GitHub
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Fcg.Core.WebApi (>= 1.0.3)
- MediatR (>= 14.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 117 | 8/7/2026 |