CSharpEssentials.Http
4.1.0
See the version list below for details.
dotnet add package CSharpEssentials.Http --version 4.1.0
NuGet\Install-Package CSharpEssentials.Http -Version 4.1.0
<PackageReference Include="CSharpEssentials.Http" Version="4.1.0" />
<PackageVersion Include="CSharpEssentials.Http" Version="4.1.0" />
<PackageReference Include="CSharpEssentials.Http" />
paket add CSharpEssentials.Http --version 4.1.0
#r "nuget: CSharpEssentials.Http, 4.1.0"
#:package CSharpEssentials.Http@4.1.0
#addin nuget:?package=CSharpEssentials.Http&version=4.1.0
#tool nuget:?package=CSharpEssentials.Http&version=4.1.0
CSharpEssentials.Http
HttpClient extensions that return Result<T> instead of throwing exceptions. Built-in status-code-to-error mapping, fluent request builder, Polly resilience, and redirect handling.
Features
- Result-based HTTP —
GetFromJsonAsResultAsync,PostAsJsonAsResultAsync,PutAsJsonAsResultAsync,PatchAsJsonAsResultAsync,DeleteAsResultAsync. - Automatic Error Mapping — HTTP codes mapped to
ErrorType(Validation, Unauthorized, NotFound, Conflict, etc.). - Fluent Request Builder — Chain headers, query params, JSON content, and redirects.
- Polly Integration — Retry, timeout, and circuit breaker pipelines.
- Query String Helpers — Build URIs from dictionaries or anonymous objects.
Installation
dotnet add package CSharpEssentials.Http
Usage
GET, POST, PUT, PATCH, DELETE as Result
using CSharpEssentials.Http;
using CSharpEssentials.ResultPattern;
HttpClient client = new() { BaseAddress = new Uri("https://api.example.com") };
Result<User> user = await client.GetFromJsonAsResultAsync<User>(new Uri("/users/1", UriKind.Relative));
Result<User> created = await client.PostAsJsonAsResultAsync<User>(
new Uri("/users", UriKind.Relative),
new { Name = "Alice", Age = 30 });
Result deleted = await client.DeleteAsResultAsync(new Uri("/users/1", UriKind.Relative));
HttpRequestBuilder
Result<User> result = await HttpRequestBuilder
.Get("/users/1")
.WithHeader("Accept", "application/json")
.WithQuery("include", "profile")
.AsResultAsync<User>(client);
Result created = await HttpRequestBuilder
.Post("/users")
.WithJsonContent(new { Name = "Bob" })
.AsResultAsync(client);
Query String Builder
Uri uri = new Uri("https://api.example.com/search");
Uri withQuery = uri.WithQueryString("q", "csharp").Value;
Uri withDict = uri.WithQueryString(new Dictionary<string, string?> { { "page", "1" } }).Value;
Polly Resilience
var pipeline = HttpClientResilienceExtensions.CreateResiliencePipeline(
maxRetryAttempts: 3,
timeout: TimeSpan.FromSeconds(30));
Result<User> result = await pipeline.ExecuteAsResultAsync(async token =>
await client.GetFromJsonAsResultAsync<User>(new Uri("/users/1", UriKind.Relative), cancellationToken: token));
Redirect Following
Result<User> result = await HttpRequestBuilder
.Get("/legacy-url")
.FollowRedirects(maxRedirects: 3)
.AsResultAsync<User>(client);
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 was computed. 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 is compatible. 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. net11.0 is compatible. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- CSharpEssentials.Errors (>= 4.1.0)
- CSharpEssentials.Json (>= 4.1.0)
- CSharpEssentials.Resilience (>= 4.1.0)
- CSharpEssentials.Results (>= 4.1.0)
- Polly.Core (>= 8.0.0 && < 9.0.0)
- System.Net.Http.Json (>= 9.0.0)
- System.Text.Json (>= 9.0.4)
-
net10.0
- CSharpEssentials.Errors (>= 4.1.0)
- CSharpEssentials.Json (>= 4.1.0)
- CSharpEssentials.Resilience (>= 4.1.0)
- CSharpEssentials.Results (>= 4.1.0)
- Polly.Core (>= 8.0.0 && < 9.0.0)
-
net11.0
- CSharpEssentials.Errors (>= 4.1.0)
- CSharpEssentials.Json (>= 4.1.0)
- CSharpEssentials.Resilience (>= 4.1.0)
- CSharpEssentials.Results (>= 4.1.0)
- Polly.Core (>= 8.0.0 && < 9.0.0)
-
net9.0
- CSharpEssentials.Errors (>= 4.1.0)
- CSharpEssentials.Json (>= 4.1.0)
- CSharpEssentials.Resilience (>= 4.1.0)
- CSharpEssentials.Results (>= 4.1.0)
- Polly.Core (>= 8.0.0 && < 9.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on CSharpEssentials.Http:
| Package | Downloads |
|---|---|
|
CSharpEssentials
A comprehensive C# library enhancing functional programming capabilities with type-safe monads (Maybe, Result), discriminated unions (Any), and robust error handling. Features include: domain-driven design support, enhanced Entity Framework integration, testable time management, JSON utilities, and LINQ extensions. Built for modern C# development with focus on maintainability, testability, and functional programming principles. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 6.5.2 | 119 | 10/10/2026 |
| 6.5.1 | 111 | 10/10/2026 |
| 6.5.0 | 111 | 10/9/2026 |
| 6.4.0 | 113 | 10/9/2026 |
| 6.3.0 | 113 | 10/8/2026 |
| 6.2.0 | 111 | 10/8/2026 |
| 6.1.0 | 112 | 10/7/2026 |
| 6.0.0 | 116 | 10/7/2026 |
| 5.2.1 | 109 | 10/7/2026 |
| 5.2.0 | 115 | 10/7/2026 |
| 5.1.0 | 108 | 10/7/2026 |
| 5.0.0 | 112 | 10/6/2026 |
| 4.1.0 | 116 | 10/6/2026 |
| 4.0.0 | 112 | 10/5/2026 |
| 3.2.3 | 350 | 5/31/2026 |
| 3.2.2 | 170 | 5/31/2026 |
| 3.2.1 | 164 | 5/31/2026 |
| 3.2.0 | 156 | 5/30/2026 |
| 3.1.0 | 168 | 5/27/2026 |
| 3.0.8 | 163 | 5/20/2026 |