RestEase 1.5.2
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.
Install-Package RestEase -Version 1.5.2
dotnet add package RestEase --version 1.5.2
<PackageReference Include="RestEase" Version="1.5.2" />
paket add RestEase --version 1.5.2
#r "nuget: RestEase, 1.5.2"
Release Notes
Changelog
=========
v1.5.2
------
- SourceGenerator: Add `<auto-generated>` comment to generated files, to keep StyleCop et al happy (#174)
- HttpClientFactory: fix types not being correctly registered (#175)
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
Dependencies
-
.NETFramework 4.5
- Newtonsoft.Json (>= 6.0.1)
-
.NETStandard 1.1
- NETStandard.Library (>= 1.6.0)
- Newtonsoft.Json (>= 9.0.1)
- System.Collections.Concurrent (>= 4.0.12)
- System.Net.Http (>= 4.1.0)
- System.Reflection (>= 4.1.0)
- System.Reflection.Emit (>= 4.0.1)
-
.NETStandard 2.0
- Newtonsoft.Json (>= 11.0.1)
- System.Reflection.Emit (>= 4.0.1)
-
.NETStandard 2.1
- Newtonsoft.Json (>= 11.0.1)
-
net5.0
- Newtonsoft.Json (>= 11.0.1)
Used By
NuGet packages (89)
Showing the top 5 NuGet packages that depend on RestEase:
Package | Downloads |
---|---|
WireMock.Net.RestClient
A RestClient using RestEase to access the admin interface.
|
|
HRMS.Common
Package Description
|
|
Convey.HTTP.RestEase
Convey.HTTP.RestEase
|
|
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.
|
|
Blip.HttpClient
BLiP Extensions' extensions to include logs, including a TCP/HTTP ISender factory
|
GitHub repositories (9)
Showing the top 5 popular GitHub repositories that depend on RestEase:
Repository | Stars |
---|---|
canton7/SyncTrayzor
Windows tray utility / filesystem watcher / launcher for Syncthing
|
|
asc-lab/dotnetcore-microservices-poc
Very simplified insurance sales system made in a microservices architecture using .NET Core
|
|
servicetitan/Stl.Fusion
Get real-time UI updates in Blazor apps and 10-1000x faster API responses with a novel approach to distributed reactive computing. Fusion brings computed observables and automatic dependency tracking from Knockout.js/MobX/Vue to the next level by enabling a single dependency graph span multiple servers and clients, including Blazor apps running in browser.
|
|
canton7/Stylet
A very lightweight but powerful ViewModel-First MVVM framework for WPF for .NET Framework and .NET Core, inspired by Caliburn.Micro.
|
|
snatch-dev/Convey
A simple recipe for .NET Core microservices.
|
Version History
Version | Downloads | Last updated |
---|---|---|
1.5.2 | 38,341 | 12/17/2020 |
1.5.1 | 12,258 | 12/3/2020 |
1.5.0 | 202,640 | 6/30/2020 |
1.4.12 | 110,482 | 4/26/2020 |
1.4.11 | 65,535 | 4/4/2020 |
1.4.10 | 541,623 | 7/27/2019 |
1.4.9 | 209,494 | 4/28/2019 |
1.4.8 | 4,465 | 4/24/2019 |
1.4.7 | 1,134,448 | 8/13/2018 |
1.4.6 | 2,415 | 8/12/2018 |
1.4.5 | 170,364 | 3/9/2018 |
1.4.4 | 493,672 | 9/19/2017 |
1.4.3 | 34,424 | 8/20/2017 |
1.4.2 | 55,192 | 8/6/2017 |
1.4.1 | 107,371 | 6/9/2017 |
1.4.0 | 15,787 | 4/22/2017 |
1.3.3 | 6,025 | 3/13/2017 |
1.3.2 | 10,932 | 2/2/2017 |
1.3.1 | 3,790 | 12/9/2016 |
1.3.0 | 215,998 | 11/10/2016 |
1.2.3 | 999 | 11/3/2016 |
1.2.2 | 3,545 | 9/19/2016 |
1.2.1 | 1,005 | 9/18/2016 |
1.2.0 | 936 | 9/16/2016 |
1.1.2 | 2,084 | 8/7/2016 |
1.1.1 | 1,365 | 8/6/2016 |
1.0.11 | 1,386 | 6/9/2016 |
1.0.8 | 1,693 | 4/11/2016 |
1.0.7 | 1,594 | 3/2/2016 |
1.0.6 | 3,230 | 12/23/2015 |
1.0.5 | 1,224 | 11/25/2015 |
1.0.4 | 928 | 10/26/2015 |
1.0.3 | 1,369 | 10/3/2015 |
1.0.2 | 966 | 10/1/2015 |
1.0.1 | 2,947 | 8/4/2015 |
1.0.0 | 1,210 | 5/22/2015 |
0.9.3 | 898 | 5/19/2015 |
0.9.2 | 888 | 5/19/2015 |
0.9.1 | 909 | 5/19/2015 |