CSharpEssentials.Http
3.0.3
See the version list below for details.
dotnet add package CSharpEssentials.Http --version 3.0.3
NuGet\Install-Package CSharpEssentials.Http -Version 3.0.3
<PackageReference Include="CSharpEssentials.Http" Version="3.0.3" />
<PackageVersion Include="CSharpEssentials.Http" Version="3.0.3" />
<PackageReference Include="CSharpEssentials.Http" />
paket add CSharpEssentials.Http --version 3.0.3
#r "nuget: CSharpEssentials.Http, 3.0.3"
#:package CSharpEssentials.Http@3.0.3
#addin nuget:?package=CSharpEssentials.Http&version=3.0.3
#tool nuget:?package=CSharpEssentials.Http&version=3.0.3
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"), 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 (>= 3.0.3)
- CSharpEssentials.Json (>= 3.0.3)
- CSharpEssentials.Results (>= 3.0.3)
- Polly (>= 8.0.0)
- System.Net.Http.Json (>= 9.0.0)
- System.Text.Json (>= 9.0.0)
-
net10.0
- CSharpEssentials.Errors (>= 3.0.3)
- CSharpEssentials.Json (>= 3.0.3)
- CSharpEssentials.Results (>= 3.0.3)
- Polly (>= 8.0.0)
-
net11.0
- CSharpEssentials.Errors (>= 3.0.3)
- CSharpEssentials.Json (>= 3.0.3)
- CSharpEssentials.Results (>= 3.0.3)
- Polly (>= 8.0.0)
-
net9.0
- CSharpEssentials.Errors (>= 3.0.3)
- CSharpEssentials.Json (>= 3.0.3)
- CSharpEssentials.Results (>= 3.0.3)
- Polly (>= 8.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.