NetTailor simplifies development with a declarative, CQRS-like approach that reduces boilerplate code and streamlines maintenance, allowing you to focus on the data-in and data-out.
Installing NetTailor
With .NET CLI:
dotnet add package NetTailorOr use example code
// use against IServiceCollection
var clientBuilder = services.AddHttpClientProfile("example", client =>
{
client.BaseAddress = new Uri("http://api.example.com/");
});clientBuilder.Get<SampleGet, SampleGetResponse>(r => $"users/{r.Id}/friends", // configure route
reqBuilder => // configure request
{
reqBuilder.Headers((_, h) => h.Add("PER-REQUEST-HEADER", "some-value"));
reqBuilder.Query(q => new { Sort = "Asc", OrderBy = nameof(q.Name) });
});var request = new SampleGet { Id = 1, Name = "John" };
var dispatcher = serviceProvider.GetService<IRequestDispatcher>();
var response = await dispatcher.Dispatch<SampleGet, SampleGetResponse>(request, CancellationToken.None);clientBuilder.Post<SamplePost, SamplePostResponse>("users",
reqBuilder =>
{
reqBuilder.Content(r => new
{
r.Email,
r.Name,
r.Password,
r.PasswordConfirmation,
});
});clientBuilder.Post<SampleUpload, SampleUploadResult>(r => $"users/{r.Id}/photos"
reqBuilder =>
{
reqBuilder.Form(r => new
{
Photo = r.File, // a stream, will be translated to form-data
r.Description,
r.IsPublic,
});
});