Pandatech.ResponseCrafter 1.2.1

dotnet add package Pandatech.ResponseCrafter --version 1.2.1
NuGet\Install-Package Pandatech.ResponseCrafter -Version 1.2.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="Pandatech.ResponseCrafter" Version="1.2.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Pandatech.ResponseCrafter --version 1.2.1
#r "nuget: Pandatech.ResponseCrafter, 1.2.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.
// Install Pandatech.ResponseCrafter as a Cake Addin
#addin nuget:?package=Pandatech.ResponseCrafter&version=1.2.1

// Install Pandatech.ResponseCrafter as a Cake Tool
#tool nuget:?package=Pandatech.ResponseCrafter&version=1.2.1

Pandatech.ResponseCrafter

Introduction

ResponseCrafter is a comprehensive NuGet package for .NET 8+, specifically designed for enhanced exception handling and logging in ASP.NET applications. This package simplifies the process of handling standard and custom exceptions by crafting detailed error responses suitable for both development and production environments.

Features

  • Custom Exception Handling: Streamlines the process of managing both standard HTTP exceptions and custom exceptions.
  • Detailed Error Responses: Generates verbose error messages, including stack traces for in-depth debugging in development environments.
  • Environment-Sensitive Logging: Offers a class PandaExceptionHandler which can be configured for message verbosity. In production environments, only the exception type and message are logged. In development environments, the entire exception is logged, including the stack trace.
  • Frontend-Friendly Error Messages: Encourages the use of snake_case in error messages, facilitating easier integration with frontend localization systems.
  • Organized/Readable and standardized error responses: Provides a standardized error response format for all exceptions, making it easier for frontend applications to parse and display error messages. The error response format is shown below:
{
  "TraceId": "0HMVFE0A284AM:00000001",
  "Instance": "POST - 164.54.144.23:443/users/register",
  "StatusCode": 400,
  "Type": "BadRequestException",
  "Errors": {
    "email": "email_address_is_not_in_a_valid_format",
    "password": "password_must_be_at_least_8_characters_long"
  },
  "Message": "the_request_was_invalid_or_cannot_be_otherwise_served."
}

Installation

Install the package via NuGet Package Manager or use the following command:

Install-Package ResponseCrafter

Usage

1. Setup Exception Handlers:

Add AddResponseCrafter in program.cs and in configuration set "ResponseCrafterVisibility" to "Public" or "Private".

builder.AddResponseCrafter();
{
  "ResponseCrafterVisibility": "Public"
}

2. Define Custom Exceptions:

  • Create a custom exception class that inherits from ApiException or use already created ones:

  • Utilize ErrorDetails records for specific error messages related to API requests.

3. Configure Middleware:

  • Implement the exception handling middleware in your application's pipeline.
app.UseResponseCrafter();

4. Logging and Error Responses:

  • Automatically logs warnings or errors and provides crafted responses base on the exception type.

Custom Exception Already Created

  • BadRequestException
  • UnauthorizedException
  • PaymentRequiredException
  • ForbiddenException
  • NotFoundException
  • ConflictException
  • TooManyRequestsException
  • InternalServerErrorException
  • ServiceUnavailableException

Recommendations

  • Error Message Formatting: It's recommended to use snake_case for error messages to aid frontend applications in implementing localization.

Limitations

  • This package is specifically tailored for .NET 8 and above.

License

Pandatech.ResponseCrafter is licensed under the MIT License.

Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.2.1 49 4/3/2024
1.2.0 68 4/2/2024
1.1.0 108 3/22/2024
1.0.4 181 12/14/2023
1.0.3 103 11/29/2023
1.0.2 97 11/29/2023
1.0.1 88 11/28/2023
1.0.0 100 11/28/2023

Updated nugets