- Provide an extension point to customise the ApiException thrown for unsuccessful requests (#257)
- RestEase.SourceGenerator: support types with the same name but different arity (#252)
- Support passing a custom
IRequester
when usingHttpClientFactory
(#244)
- Bump Json.NET minimum version to avoid users being accidentally exposed to CWE-755
- Fix
Task<Response<string>>
(#230) - HttpClientFactory: Allow passing a delegate which is used to configure the created interface instance, e.g. to set properies(#240)
- Support multiple attributes on a single parameter (#171)
- Source generator: Add .g.cs suffix to generated filenames (#226)
- HttpClientFactory: A supplied
RequestModifier
no longer overrides thePrimaryHttpMessageHandler
, meaning you can supply this when callingUseWithRestEaseClient
(#211, #220)
- Update System.Net.Http dependency to avoid CVE-2018-8292
- Source generator: Speed up slightly
- Fix binary break in
ApiException
(#182)
- Add
RestClient
overloads which accept aHttpMessageHandler
- Add instructions on using
Polly
to README (#89) - Add
ApiException.DeserializeContent<T>
(#172) - Add additional
RestClient
constructor and.For
overloads - Source generator: Don't emit
#nullable enable
before C# 8 - Source generator: Fix enum parameters which accept a default value (#181)
- HttpClientFactory: Add
IHttpClientBuilder.UseWithRestEaseClient
- SourceGenerator: Add
<auto-generated>
comment to generated files, to keep StyleCop et al happy (#174) - HttpClientFactory: fix types not being correctly registered (#175)
- 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 withHttpClient.Options
- Minor bug fixes
- 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
- Add support for multiple raw query strings (#151)
- Add netstandard1.2 target
- README improvements
- 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)
- Add
[BasePath]
(#113)
- 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)
- 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)
- Fix crash introduced by (#98) when a method has a non-primitive struct type with a default value
- 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)
- 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)
- Ensure that methods which return
Task
properly dispose of the underlyingHttpResponseMessage
(#65)
- Add support for
Task<Stream>
responses (#56) - Various README improvements (#53, #55, #58, #59)
- 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)
- 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)
- 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)
- 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 aUri
(#27)
- Add support for netstandard1.1
- If you make your interface
IDisposable
, disposing it will dispose the underlyingHttpClient
- If your method return type is
Task<HttpResponseMessage>
, useHttpCompletionOption.ResponseHeadersRead
instead ofHttpCompletionOption.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)
- BREAKING CHANGE: Add a
RequestQueryParamSerializerInfo
parameter to methods onIRequestQueryParamSerializer
- Add support for specifying
IFormattable
format strings for query parameters, path parameters, and path properties (#21)
- Allow null BaseAddress on HttpClient
- Make ApiException constructor public, to allow easier unit testing of RestEase consumers
- Fix metadata fields in NuGet package (no functional changes)
- 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
- Avoid dependency on System.Net.Http NuGet package on .NET 4.5
- Avoid dependency on Microsoft.Net.Http on .NET 4.5
- Add support for .NET Core (.NET Standard 1.3) - thanks to Fazouane Marouane
- Fix a test
- Do encode '/' in path parameters
- Encode space as '%20' rather than '+' in path parameters
- Don't encode '/' in path parameters
- Fix issue where query parameters not decorated with
[Query]
would always be serialized as ToString, regardless of any[SerializationMethod]
attributes
- Handle null paths (e.g.
[Post]
or[Get(null)]
)
- Support .NET 4.0 (using Microsoft.Net.Http and Microsoft.Bcl.Async as dependencies)
- URL Encode path parameters
- 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).
- Fix race condition when creating implementations (#4)
- Allow interface headers in interface inheritance (#3)
- Add missing
RestClient.For
overloads
- Allow interface inheritance (#3)
JsonRequestBodySerializer
sets a default Content-Type header ofapplication/json
- Initial Release