Pandatech.ResponseCrafter
2.1.1
See the version list below for details.
dotnet add package Pandatech.ResponseCrafter --version 2.1.1
NuGet\Install-Package Pandatech.ResponseCrafter -Version 2.1.1
<PackageReference Include="Pandatech.ResponseCrafter" Version="2.1.1" />
paket add Pandatech.ResponseCrafter --version 2.1.1
#r "nuget: Pandatech.ResponseCrafter, 2.1.1"
// Install Pandatech.ResponseCrafter as a Cake Addin #addin nuget:?package=Pandatech.ResponseCrafter&version=2.1.1 // Install Pandatech.ResponseCrafter as a Cake Tool #tool nuget:?package=Pandatech.ResponseCrafter&version=2.1.1
Pandatech.ResponseCrafter
Introduction
Pandatech.ResponseCrafter is a comprehensive NuGet package for .NET 8+, specifically designed to enhance exception handling and logging in ASP.NET Core applications. This package simplifies managing 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: Provides flexible logging and response behavior based on visibility
settings (
Public
orPrivate
):- Private: All exceptions are sent to the client as defined, and 4xx errors are logged as warnings while 5xx errors are logged as errors.
- Public: 4xx exceptions are sent to the client as defined, while 5xx errors are concealed with a generic
message. Logging remains the same as in
Private
.
- Frontend-Friendly Error Messages: Supports converting error messages to your desired case convention, facilitating easier integration with frontend localization systems.
- Standardized Error Responses: Provides a standardized error response format, 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
bby providing an optional naming convention, and
configure ResponseCrafterVisibility
in your settings.
var builder = WebApplication.CreateBuilder(args);
// Basic setup
builder.AddResponseCrafter();
// Setup with a specific naming convention
builder.AddResponseCrafter(NamingConvention.ToSnakeCase);
var app = builder.Build();
app.UseResponseCrafter();
app.Run();
Configure visibility in your appsettings.json
:
{
"ResponseCrafterVisibility": "Public"
}
Supported naming conventions:
public enum NamingConvention
{
Default = 0,
ToSnakeCase = 1,
ToPascalCase = 2,
ToCamelCase = 3,
ToKebabCase = 4,
ToTitleCase = 5,
ToHumanCase = 6
}
2. Define Custom Exceptions:
Create custom exception classes that inherit from ApiException
or use the predefined ones. Use 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:
The package automatically logs warnings or errors and provides crafted responses based on the exception type.
Custom HTTP Exception Already Created
BadRequestException
UnauthorizedException
PaymentRequiredException
ForbiddenException
NotFoundException
ConflictException
TooManyRequestsException
InternalServerErrorException
ServiceUnavailableException
Custom Exception Helper Methods
Using exception helpers:
decimal? price = -10.5m;
//For 400 Bad Request
BadRequestException.ThrowIfNullOrNegative(price, "Price is negative");
//For 500 Internal Server Error
InternalServerErrorException.ThrowIfNullOrNegative(price, "Price");
string? username = " ";
//For 400 Bad Request
BadRequestException.ThrowIfNullOrWhiteSpace(username, "Please provide username");
//For 404 Not Found
NotFoundException.ThrowIfNullOrWhiteSpace(username, "username");
//For 500 Internal Server Error
InternalServerErrorException.ThrowIfNullOrWhiteSpace(username, "username");
List<string?>? tags = new List<string?> { "tag1", " ", null };
//For 400 Bad Request
BadRequestException.ThrowIfNullOrWhiteSpace(tags, "tags");
//For 500 Internal Server Error
InternalServerErrorException.ThrowIfNullOrWhiteSpace(tags, "tags");
object? user = null;
//For 400 Bad Request
BadRequestException.ThrowIfNull(user, "Please provide user");
//For 404 Not Found
NotFoundException.ThrowIfNull(user, "user");
//For 500 Internal Server Error
InternalServerErrorException.ThrowIfNull(user, "user");
These examples show how to use the ThrowIfNullOrNegative
, ThrowIfNullOrWhiteSpace
, and ThrowIfNull
helper methods
from BadRequestException
, InternalServerErrorException
and NotFoundException
. Adjust the object names and values according to your specific
application needs.
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 | Versions 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. |
-
net8.0
- Humanizer (>= 2.14.1)
- Microsoft.AspNetCore.OpenApi (>= 8.0.6)
- PandaTech.BaseConverter (>= 4.0.3)
- PandaTech.FluentImporter (>= 2.0.12)
- Pandatech.GridifyExtensions (>= 1.3.1)
- PandaTech.ServiceResponse (>= 1.2.12)
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 |
---|---|---|
4.0.0 | 92 | 10/4/2024 |
3.0.1 | 125 | 9/11/2024 |
3.0.0 | 106 | 7/18/2024 |
2.2.2 | 112 | 6/29/2024 |
2.2.1 | 111 | 6/29/2024 |
2.2.0 | 114 | 6/27/2024 |
2.1.4 | 114 | 6/27/2024 |
2.1.3 | 145 | 6/22/2024 |
2.1.2 | 90 | 6/22/2024 |
2.1.1 | 96 | 6/22/2024 |
2.1.0 | 96 | 6/22/2024 |
2.0.0 | 107 | 6/13/2024 |
1.7.0 | 90 | 6/13/2024 |
1.6.3 | 98 | 6/9/2024 |
1.6.2 | 104 | 6/6/2024 |
1.6.1 | 122 | 6/2/2024 |
1.5.1 | 112 | 5/28/2024 |
1.5.0 | 111 | 5/26/2024 |
1.4.14 | 115 | 5/24/2024 |
1.4.13 | 97 | 5/24/2024 |
1.4.12 | 108 | 5/17/2024 |
1.4.10 | 122 | 5/8/2024 |
1.4.9 | 129 | 5/7/2024 |
1.4.8 | 108 | 5/6/2024 |
1.4.7 | 120 | 5/5/2024 |
1.4.6 | 81 | 5/3/2024 |
1.4.5 | 118 | 4/24/2024 |
1.4.4 | 113 | 4/24/2024 |
1.4.3 | 109 | 4/24/2024 |
1.4.2 | 107 | 4/23/2024 |
1.4.1 | 128 | 4/16/2024 |
1.4.0 | 119 | 4/16/2024 |
1.3.0 | 108 | 4/16/2024 |
1.2.1 | 140 | 4/3/2024 |
1.2.0 | 144 | 4/2/2024 |
1.1.0 | 171 | 3/22/2024 |
1.0.4 | 313 | 12/14/2023 |
1.0.3 | 153 | 11/29/2023 |
1.0.2 | 143 | 11/29/2023 |
1.0.1 | 133 | 11/28/2023 |
1.0.0 | 150 | 11/28/2023 |
Exception throw helpers are added