RestEase 1.5.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package RestEase --version 1.5.1                
NuGet\Install-Package RestEase -Version 1.5.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="RestEase" Version="1.5.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add RestEase --version 1.5.1                
#r "nuget: RestEase, 1.5.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 RestEase as a Cake Addin
#addin nuget:?package=RestEase&version=1.5.1

// Install RestEase as a Cake Tool
#tool nuget:?package=RestEase&version=1.5.1                

Easy-to-use typesafe REST API client library, which is simple and customisable.
   
Write a C# interface which describes your API, and RestEase generates an implementation you can call into.

Source Generators are here! Reference the RestEase.SourceGenerator NuGet package.

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  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. 
.NET Core netcoreapp1.0 was computed.  netcoreapp1.1 was computed.  netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard1.1 is compatible.  netstandard1.2 was computed.  netstandard1.3 was computed.  netstandard1.4 was computed.  netstandard1.5 was computed.  netstandard1.6 was computed.  netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  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 tizen30 was computed.  tizen40 was computed.  tizen60 was computed. 
Universal Windows Platform uap was computed.  uap10.0 was computed. 
Windows Phone wpa81 was computed. 
Windows Store netcore was computed.  netcore45 was computed.  netcore451 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 (129)

Showing the top 5 NuGet packages that depend on RestEase:

Package Downloads
RestEase.HttpClientFactory

HttpClientFactory adapter for ASP.NET Core for RestEase: the easy-to-use typesafe REST API client library, which is simple and customisable.

WireMock.Net.RestClient

A RestClient using RestEase to access the admin interface.

Stl.Fusion.Client

Client-side components of Stl.Fusion - a new implementation of "computed observables" designed to power distributed apps. Thread-safe, asynchronous, immutable, and ready to serve replicas of computed instances to remote clients.

Bitmovin.Api.Sdk

C#-Client which enables you to seamlessly integrate the Bitmovin API into your projects. Using this API client requires an active account.

Convey.HTTP.RestEase

Convey.HTTP.RestEase

GitHub repositories (15)

Showing the top 5 popular GitHub repositories that depend on RestEase:

Repository Stars
canton7/SyncTrayzor
Windows tray utility / filesystem watcher / launcher for Syncthing
vietnam-devs/coolstore-microservices
A full-stack .NET microservices build on Dapr and Tye
OrchardCMS/Orchard
Orchard is a free, open source, community-focused Content Management System built on the ASP.NET MVC platform.
servicetitan/Stl.Fusion
Build real-time apps (Blazor included) with less than 1% of extra code responsible for real-time updates. Host 10-1000x faster APIs relying on transparent and nearly 100% consistent caching. We call it DREAM, or Distributed REActive Memoization, and it's here to turn real-time on!
WireMock-Net/WireMock.Net
WireMock.Net is a flexible product for stubbing and mocking web HTTP responses using advanced request matching and response templating. Based on the functionality from http://WireMock.org, but extended with more functionality.
Version Downloads Last updated
1.6.4 2,006,116 4/19/2023
1.6.3 6,239 4/17/2023
1.6.2 67,312 4/5/2023
1.6.1 719,482 11/30/2022
1.6.0 154,252 11/6/2022
1.5.7 2,083,401 6/4/2022
1.5.6 232,125 4/23/2022
1.5.5 2,304,219 5/31/2021
1.5.4 488,871 3/11/2021
1.5.3 3,795 3/10/2021
1.5.2 535,962 12/17/2020
1.5.1 81,591 12/3/2020
1.5.0 4,847,981 6/30/2020
1.4.12 455,385 4/26/2020
1.4.11 187,149 4/4/2020
1.4.10 1,476,745 7/27/2019
1.4.9 436,705 4/28/2019
1.4.8 8,834 4/24/2019
1.4.7 1,998,865 8/13/2018
1.4.6 9,996 8/12/2018
1.4.5 305,201 3/9/2018
1.4.4 829,965 9/19/2017
1.4.3 43,715 8/20/2017
1.4.2 97,601 8/6/2017
1.4.1 177,837 6/9/2017
1.4.0 25,391 4/22/2017
1.3.3 9,580 3/13/2017
1.3.2 14,126 2/2/2017
1.3.1 7,071 12/9/2016
1.3.0 295,258 11/10/2016
1.2.3 3,950 11/3/2016
1.2.2 7,602 9/19/2016
1.2.1 4,187 9/18/2016
1.2.0 3,722 9/16/2016
1.1.2 5,092 8/7/2016
1.1.1 4,206 8/6/2016
1.0.11 4,985 6/9/2016
1.0.8 4,951 4/11/2016
1.0.7 4,492 3/2/2016
1.0.6 6,457 12/23/2015
1.0.5 4,519 11/25/2015
1.0.4 3,756 10/26/2015
1.0.3 4,225 10/3/2015
1.0.2 3,852 10/1/2015
1.0.1 6,530 8/4/2015
1.0.0 3,994 5/22/2015
0.9.3 3,573 5/19/2015
0.9.2 3,688 5/19/2015
0.9.1 3,683 5/19/2015

Changelog
=========

v1.5.1
------

- RestEase.SourceGenerator is out of preview!
- Add support for `[BaseAddress]`
- Improve how content headers behave: if a method has a `[Body]` parameter, contents headers are always sent
- HttpClientFactory: allow passing a RequestModifier to AddRestEaseClient (#164)
- HttpClientFactory: add overloads which take a Uri
- .NET 5: Add `RestClient.HttpRequestMessageRequestInfoOptionsKey` for use with `HttpClient.Options`
- Minor bug fixes

v1.5.0
------

- Support content-related headers on a method, even if the method doesn't specify a body (#156)
- Add the RestEase.SourceGenerator NuGet package (currently in preview)
- Add the RestEase.HttpClientFactory NuGet package

v1.4.12
-------

- Add support for multiple raw query strings (#151)
- Add netstandard1.2 target
- README improvements


v1.4.11
-------

- Add extended formats for property headers and header params (#123)
- Make RequestInfo available to the RequestModifier (#133)
- Add Nullable Reference Type annotations
- README improvements (#127, #129, #132, #135, #138)

v1.4.10
-------

- Add `[BasePath]` (#113)

v1.4.9
------

- Support custom path parameter/property serialization (thanks to @sharparam). This is useful for enums (#95)
- Support setting `HttpRequestMessage.Proprties` through properties and parameters (thanks to @Husqvik) (#116)
- Allow request body headers to be sent, if the body is null (#109)

v1.4.8
------

- Avoid deadlock in ModifyingHttpClientHandler (#115)
- Avoid crash if a user's HttpClientHandler returns a HttpResponseMessage with a null body (#108)
- Add assembly name to generated type name, to avoid conflicts when two assemblies both use the same interface (#108)
- Improve README (#107, #111)

v1.4.7
------

- Fix crash introduced by (#98) when a method has a non-primitive struct type with a default value

v1.4.6
------

- Fixed ignored QueryAttribute.Name when set using property setter (`[Query(Name = "customName")`)(#94)
- If type creation fails, make sure all subsequent attempts throw the same exception (#93)
- Support `byte[]` bodies (#91)
- Support generic methods (as well as generic interfaces) (#92)
- Support netstandard2.0 as a separate target (reduces dependencies for netstandard2.0+ projects) (#88)
- Reflect optional parameters in implementation for IronPython (#98)

v1.4.5
------

- Fix memory leak (#74)
- Allow a custom class to be used to control query param serialization (#61)
- Make sure HttpResponseMessage is properly disposed (this wasn't causing a memory leak) (#82)
- Add query properties (#70)

v1.4.4
------

- Ensure that methods which return `Task` properly dispose of the underlying `HttpResponseMessage` (#65)

v1.4.3
------

- Add support for `Task<Stream>` responses (#56)
- Various README improvements (#53, #55, #58, #59)

v1.4.2
------

- Move to abstract base classes for custom serializers and deserializers
- Add MethodInfo to the IRequestInfo, and pass to custom serializers and deserializers. This allows custom serializers and deserializers to look at e.g. custom attributes on the method which was called (#51)
- Allow an `IFormatProvider` to be specified, which overrides the culture on the thread which calls RestEase's methods (#49)
- Reduce json.net dependency version to 6.0.1 for net45 (#52)
- Add `RestClient.For(Type type, IRequester requester)` overload (#43)

v1.4.1
------

- Fix bug where unicode characters were incorrectly double-encoded (#46)
- Add support for `IRequester` properties (#38)
- Add non-generic `RestClient.For(Type type)` overload (#43)

v1.4.0
------

- **BREAKING CHANGE**: Remove support for .NET 4.0. Microsoft.Bcl.Async does not work well with csproj-based .NET Core projects
- Add information about the request to ApiException (#30)
- Work around an issue when running on Mono which caused a double '??' in URLs (#35)

v1.3.3
------

- Don't crash if a `[Header]` attribute on a method is used to remove one specified on the interface / on a property (#29)
- Add `RestClient` overloads which take a `Uri` (#27)

v1.3.2
------

- Add support for netstandard1.1

v1.3.1
------

- If you make your interface `IDisposable`, disposing it will dispose the underlying `HttpClient`
- If your method return type is `Task<HttpResponseMessage>`, use `HttpCompletionOption.ResponseHeadersRead` instead of `HttpCompletionOption.ResponseContentRead`, allowing you to control if and when the content is read.
- Add support for the HTTP Patch method
- Add `[Path(UrlEncode = false)]`, allowing URL encoding to be turned off for individual path parameters
- Remove the dependency on all of NetStandard.Library (for .NET Core targets)

v1.3.0
------

- **BREAKING CHANGE**: Add a `RequestQueryParamSerializerInfo` parameter to methods on `IRequestQueryParamSerializer`
- Add support for specifying `IFormattable` format strings for query parameters, path parameters, and path properties (#21)

v1.2.3
------

- Allow null BaseAddress on HttpClient
- Make ApiException constructor public, to allow easier unit testing of RestEase consumers

v1.2.1, v1.2.2
--------------

- Fix metadata fields in NuGet package (no functional changes)

v1.2.0
------

- Add support for path properties - path compoments which are the same for every request (#16)
- Add support for raw, unencoded query parameters (#17)
- Support query parameters without a key
- Improve some error messages

v1.1.2
------

- Avoid dependency on System.Net.Http NuGet package on .NET 4.5

v1.1.1
------

- Avoid dependency on Microsoft.Net.Http on .NET 4.5

v1.1.0
------

- Add support for .NET Core (.NET Standard 1.3) - thanks to [Fazouane Marouane](https://github.com/fazouane-marouane)

v1.0.11
-------

- Fix a test

v1.0.10
-------

- Do encode '/' in path parameters

v1.0.9
------

- Encode space as '%20' rather than '+' in path parameters
- Don't encode '/' in path parameters

v1.0.8
------

- Fix issue where query parameters not decorated with `[Query]` would always be serialized as ToString, regardless of any `[SerializationMethod]` attributes

v1.0.7
------

- Handle null paths (e.g. `[Post]` or `[Get(null)]`)

v1.0.6
------

- Support .NET 4.0 (using Microsoft.Net.Http and Microsoft.Bcl.Async as dependencies)
- URL Encode path parameters

v1.0.5
------

- Allow custom serialization of query parameters and query maps
- Add `[SerializationMethods]` attribute, to specify the default serialization method for bodies and query parameters
- Move to using a builder pattern for `RestClient`, to make specifying custom serializers/deserializations/configuration easier.
  The old methods are still present, but are marked as deprecated. Please upgrade to the new methods (suggested by the deprecation messages).

v1.0.4
------

- Fix race condition when creating implementations (#4)

1.0.3
-----

- Allow interface headers in interface inheritance (#3)
- Add missing `RestClient.For` overloads

1.0.2
-----

- Allow interface inheritance (#3)

1.0.1
-----

- `JsonRequestBodySerializer` sets a default Content-Type header of `application/json`

1.0.0
-----

- Initial Release