ParkSquare.Extensions.Http 8.1.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package ParkSquare.Extensions.Http --version 8.1.1                
NuGet\Install-Package ParkSquare.Extensions.Http -Version 8.1.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ParkSquare.Extensions.Http" Version="8.1.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ParkSquare.Extensions.Http --version 8.1.1                
#r "nuget: ParkSquare.Extensions.Http, 8.1.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ParkSquare.Extensions.Http as a Cake Addin
#addin nuget:?package=ParkSquare.Extensions.Http&version=8.1.1

// Install ParkSquare.Extensions.Http as a Cake Tool
#tool nuget:?package=ParkSquare.Extensions.Http&version=8.1.1                

HttpClient Extensions

Build Status

Background

This package contains HttpClient extension methods supporting typed REST verbs from JSON, XML and URL encoded form endpoints. Correctly handles bearer tokens and cookies.

Has built-in conversion of any request object to JSON, XML, querystring or URL encoded form, including binary MultipartForm requests.

Includes Uri concatenation helpers and Cookie accessor.

For responses that return a non-2xx (i.e. failure) status code, most methods will throw an UnsuccessfulResponseException of some sort, which has a Raw property containing the response message. This is useful if the error DTO shape differs from the successful DTO shape, and removes the necessity to pollute your DTOs with error properties.

Usage Examples

Most helper methods can take a response DTO type that the response will be deserialized into, e.g. if your response object is TestResponseDto:

var response = await httpClient.GetAsync<TestResponseDto>(new Uri("https://httpbin.org/get"));

If the call requires a request body (e.g. POST), or query string parameters (e.g. GET) then you can pass your request object as a strongly typed object. It will be serialized into a JSON body, or converted into query string parameters automatically depending on the HTTP verb you are using.

var request = new TestRequestDto
{
    SomeValue = 1234    
};

var response = await httpClient.PostAsync<TestResponseDto>(new Uri("https://api.example.com"), request);

In many cases, for example where you do not expect (or care about) the response, the response type can be omitted:

var request = new TestRequestDto
{
    SomeValue = 1234    
};

await httpClient.PostAsync(new Uri("https://api.example.com"), request);

Populating Values From Response Header

If you need to populate your response DTO with a value from the response header, decorate the property with the name of the header. The value is case sensitive. Note that where a header contains multiple values, only the first one will currently be returned.

public class TestResponseDto
{
    [FromHeader("x-some-header-name")]
    public string SomeProperty { get; set; }
}

When using the [FromHeader] attribute, all other properties without that decoration will still be deserialized from the API response as normal.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  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 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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
8.1.2 106 11/3/2024
8.1.1 266 10/11/2024
8.1.0 391 9/5/2024
8.0.1 472 7/26/2024
8.0.0 517 6/22/2024
4.0.4 916 4/12/2024
4.0.3 2,337 11/30/2023
3.2.9 3,027 11/2/2023
3.2.8 838 8/22/2023
3.2.7 1,058 5/17/2023
3.2.6 983 2/9/2023
3.2.5 726 2/9/2023
3.2.4 2,512 8/22/2022
3.2.2 911 8/19/2022
3.2.1 1,375 6/27/2022