DotEmilu 1.0.1
See the version list below for details.
dotnet add package DotEmilu --version 1.0.1
NuGet\Install-Package DotEmilu -Version 1.0.1
<PackageReference Include="DotEmilu" Version="1.0.1" />
paket add DotEmilu --version 1.0.1
#r "nuget: DotEmilu, 1.0.1"
// Install DotEmilu as a Cake Addin #addin nuget:?package=DotEmilu&version=1.0.1 // Install DotEmilu as a Cake Tool #tool nuget:?package=DotEmilu&version=1.0.1
DotEmilu
A simple, easy-to-use .NET library designed for handling HTTP requests and responses.
Features
- Supports GET, POST, PUT, and DELETE requests.
- Handles HTTP responses with status codes and error handling.
- Built with .NET 8 for cross-platform compatibility (Windows, Linux, macOS).
- Supports async/await for non-blocking HTTP calls.
How to Use
Follow these simple steps to get started:
Build Your Logic
Create the logic for your application based on your previously defined request and expected response.public class SampleUseCase(IVerifier<SampleRequest> verifier, IPresenter presenter) : Handler<SampleRequest, SampleResponse>(verifier, presenter) { private readonly IPresenter _presenter = presenter; private readonly IVerifier<SampleRequest> _verifier = verifier; protected override async Task<SampleResponse?> HandleResponseAsync(SampleRequest request, CancellationToken cancellationToken = default) { var result = await SomeMethod(request, cancellationToken); // Add custom validations if (string.IsNullOrEmpty(request.Note)) { _verifier.AddError("request", "invalid request"); return null; } // To custom response you can use Results if (request.Date.Year == 2024) return ResultIn(Results.Ok($"Congratulations! {result}")); // Or standard response defined in IPresenter if (request.Category >= 10) return ResultIn(_presenter.Success($"{result}. Account: {request.Account}. Category: {request.Category}")); // By default you need return the TResponse return new SampleResponse(result); } private async Task<string> SomeMethod(SampleRequest request, CancellationToken cancellationToken = default) { // Some logic } }
Add Your Endpoint
Define your endpoint using either Minimal API or a Controller, depending on your project's structure.app.MapPost("/api/sample", async ([FromBody] SampleRequest request, IHandler<SampleRequest> handler, CancellationToken cancellationToken) => await handler.HandleAsync(request, cancellationToken));
Register Your Dependencies
Ensure all required dependencies are registered in your application's dependency injection container.builder.Services .AddDotEmilu() .AddScoped<IHandler<SampleRequest>, SampleUseCase>() .AddValidatorsFromAssembly(Assembly.GetExecutingAssembly());
For a complete example
Notes:
You need to add the response messages for bad request (400) and server error (500)
{
"ResultMessage": {
"ValidationError": {
"Title": "Bad Request",
"Detail": "One or more errors"
},
"ServerError": {
"Title": "Server Error",
"Detail": "Please contact to administrator"
}
}
}
And for complex validation use fluent validation
public class SampleValidator : AbstractValidator<SampleRequest>
{
public SampleValidator()
{
RuleFor(s => s.Date)
.GreaterThanOrEqualTo(DateOnly.FromDateTime(DateTime.Now));
RuleFor(s => s.Amount)
.GreaterThan(0);
}
}
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. net9.0 was computed. 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. |
-
net8.0
- FluentValidation.DependencyInjectionExtensions (>= 11.11.0)
- Microsoft.AspNetCore.OpenApi (>= 8.0.12)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Updated Microsoft.AspNetCore.OpenApi to version 8.0.12 for stability and performance improvements.