CommonHelpers.RequestResponse 0.0.1-beta.1

This is a prerelease version of CommonHelpers.RequestResponse.
The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package CommonHelpers.RequestResponse --version 0.0.1-beta.1
                    
NuGet\Install-Package CommonHelpers.RequestResponse -Version 0.0.1-beta.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CommonHelpers.RequestResponse" Version="0.0.1-beta.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CommonHelpers.RequestResponse" Version="0.0.1-beta.1" />
                    
Directory.Packages.props
<PackageReference Include="CommonHelpers.RequestResponse" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add CommonHelpers.RequestResponse --version 0.0.1-beta.1
                    
#r "nuget: CommonHelpers.RequestResponse, 0.0.1-beta.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package CommonHelpers.RequestResponse@0.0.1-beta.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=CommonHelpers.RequestResponse&version=0.0.1-beta.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=CommonHelpers.RequestResponse&version=0.0.1-beta.1&prerelease
                    
Install as a Cake Tool

💎 CommonHelpers.RequestResponse

Modelagem moderna de resultados com Result Pattern, tipagem semântica de erros com ErrorType, erros de validação por campo (ValidationError), paginação padronizada (PagedResult<T> / PagedRequest), rastreabilidade de requisições com IRequest e envelope tradicional Response<T> com zero dependências externas para .NET 6, .NET 8 e .NET 9.

.NET 6.0 .NET 8.0 .NET 9.0 Version License: MIT


📦 Instalação

Adicione o pacote ao seu projeto via .NET CLI:

dotnet add package CommonHelpers.RequestResponse --version 0.0.1-beta.1

🚀 Como Usar

1. Paginação Padronizada (PagedResult<T> e PagedRequest)

Padronize as respostas de listagens e relatórios com cálculo automático de páginas e navegação:

using CommonHelpers.RequestResponse;

[HttpGet("users")]
public async Task<IActionResult> GetUsers([FromQuery] PagedRequest request)
{
    // PagedRequest normaliza automaticamente PageNumber e PageSize
    var (users, totalCount) = await _userRepository.GetPagedAsync(request.PageNumber, request.PageSize);

    // Cria o PagedResult imutável com cálculo automático de páginas
    var pagedResult = PagedResult<UserDto>.Create(users, totalCount, request.PageNumber, request.PageSize);

    return Ok(pagedResult);
    // Retorna: { items: [...], pageNumber: 1, pageSize: 10, totalCount: 45, totalPages: 5, hasPreviousPage: false, hasNextPage: true }
}

2. Múltiplos Erros de Validação por Campo (ValidationError)

Integração limpa com FluentValidation, DataAnnotations e formato RFC 7807 (ProblemDetails):

using CommonHelpers.RequestResponse;

public Result<UserDto> CreateUser(CreateUserCommand command)
{
    var failures = new Dictionary<string, string[]>
    {
        { "Email", new[] { "E-mail é obrigatório.", "Formato inválido." } },
        { "Password", new[] { "A senha deve conter no mínimo 8 caracteres." } }
    };

    if (failures.Count > 0)
    {
        return ValidationError.FromFailures(failures);
    }

    return new UserDto { Email = command.Email };
}

3. Result Pattern Moderno (Result<T> e Error)

Substitua exceções de fluxo por código funcional limpo, expressivo e seguro:

using CommonHelpers.RequestResponse;

public class UserService
{
    public Result<UserDto> RegisterUser(string email, string password)
    {
        if (string.IsNullOrWhiteSpace(email))
        {
            return ValidationError.ForField("Email", "O e-mail fornecido é inválido.");
        }

        var user = new UserDto { Id = Guid.NewGuid(), Email = email };
        return user; // Conversão implícita de sucesso
    }
}

4. Consumindo com Pattern Matching (Match)

var result = userService.RegisterUser("dev@empresa.com", "senha123");

string responseText = result.Match(
    onSuccess: user => $"Usuário registrado com sucesso! ID: {user.Id}",
    onFailure: error => $"Falha [{error.Code}] ({error.Type}): {error.Message}"
);

5. Rastreabilidade com IRequest

public class ProcessPaymentCommand : IRequest
{
    public Guid IdRequest { get; } = Guid.NewGuid();
    public decimal Amount { get; set; }
}

6. Interoperabilidade com Response<T> (Legado)

// Result<T> -> Response<T>
Response<UserDto> legacyResponse = result.ToResponse();

// Response<T> -> Result<T>
Result<UserDto> modernResult = legacyResponse.ToResult();

🏛️ Compatibilidade

  • .NET 6.0
  • .NET 8.0 (LTS)
  • .NET 9.0 (Standard)
  • Zero Dependências Externas (100% BCL Pura).
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

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