DotNet.RestApi.Client
3.1.0
dotnet add package DotNet.RestApi.Client --version 3.1.0
NuGet\Install-Package DotNet.RestApi.Client -Version 3.1.0
<PackageReference Include="DotNet.RestApi.Client" Version="3.1.0" />
paket add DotNet.RestApi.Client --version 3.1.0
#r "nuget: DotNet.RestApi.Client, 3.1.0"
// Install DotNet.RestApi.Client as a Cake Addin #addin nuget:?package=DotNet.RestApi.Client&version=3.1.0 // Install DotNet.RestApi.Client as a Cake Tool #tool nuget:?package=DotNet.RestApi.Client&version=3.1.0
Dot Net Core Rest Web Api Client
The convenient Web Rest Api Client for the Rest Web Service at the Docker Container.
Version 3.1.0
- Add support of .Net Core 3.1
- Add support of .Net Standard 2.1
Version 3.0.0
- Add support of .Net Core 3.0
- Add support of .Net Standard 2.1
Version 2.4.0
- Add support of IHttpClientFactory
- Add support of IHttpClientFactory
Nuget Package:
https://www.nuget.org/packages/DotNet.RestApi.Client/
Development Supported by JetBrains Open Source Program:
Rider <a href="https://www.jetbrains.com/?from=XmlResult"> <img src="https://github.com/Wallsmedia/XmlResult/blob/master/Logo/rider/logo.png?raw=true" Width="40p" /></a> Fast & powerful, cross platform .NET IDE
ReSharper <a href="https://www.jetbrains.com/?from=XmlResult"> <img src="https://github.com/Wallsmedia/XmlResult/blob/master/Logo/resharper/logo.png?raw=true" Width="40p" /></a> The Visual Studio Extension for .NET Developers
Example of using with IHttpClientFactory ASP.NET Core
- Include the nuget package into the project Microsoft.Extensions.Http
- Include the nuget package into the project DotNet.RestApi.Client
Add to the configuration initialization:
.ConfigureServices((webHostBuilderContext, services) =>
{
services.AddHttpClient<RestApiClient>();
})
Using "Polly"
- Include the nuget package into the project Microsoft.Extensions.Polly
.ConfigureServices((webHostBuilderContext, services) =>
{
services.AddTransient<RestApiClient>();
services.AddHttpClient<RestApiClient>().AddTransientHttpErrorPolicy(p => p.RetryAsync(3));
})
For more details of using Polly use link below:
In the controller:
private RestApiClient _restApiClient;
/// <summary>
/// Constructs the class.
/// </summary>
/// <param name="configuration">The capture processor configuration.</param>
/// <param name="logFactory">The logger factory.</param>
public MarketCaptureController(RestApiClient restApiClient,
MarketCaptureProcessorServiceConfiguration configuration,
ILoggerFactory logFactory)
{
_restApiClient = restApiClient;
restApiClient.ConfigureHttpRequstMessage = RestApiClientExtensions.ApplyAcceptEncodingSettingGZip;
Configuration = configuration;
_logFactory = logFactory;
_logInfo = _logFactory?.CreateLogger(Assembly.GetExecutingAssembly().GetName().Name);
}
private void GetBitCoinRate(object state)
{
try
{
Uri baseUri = new Uri(Configuration.BitCoinRequestUrl);
baseUri = new Uri("https://api.coinmarketcap.com/v1/ticker/bitcoin/?convert=EUR");
var response = _restApiClient.SendJsonRequest(HttpMethod.Get, baseUri, null).GetAwaiter().GetResult();
var bitcoin = response.DeseriaseJsonResponseAsync<TickerBitcoin[]>().GetAwaiter().GetResult();
LastMarketTop = bitcoin[0];
LogMessageResources.TraceBitCoinPrice(_logInfo, bitcoin[0].LastUpdatedUTC, bitcoin[0].price_eur, null);
}
catch (Exception e)
{
LogMessageResources.OperationException(_logInfo, nameof(MarketCaptureProcessor), e);
}
}
Example how to call with JSON:
Uri baseUri = new Uri("http://webServiceHost:15002");
RestApiClient client = new RestApiClient(baseUri);
PurchaseOrder sendObj = new PurchaseOrder();
HttpResponseMessage response = client.SendJsonRequest(HttpMethod.Post, new Uri("res", UriKind.Relative), sendObj).Result;
PurchaseOrder respObj = response.DeseriaseJsonResponse<PurchaseOrder>();
Example how to call with XML:
Uri baseUri = new Uri("http://webServiceHost:15002");
RestApiClient client = new RestApiClient(baseUri, request =>
{
request.Headers.Add("CustomHeader", "CustomHeaderValue");
});
PurchaseOrder sendObj = new PurchaseOrder();
Uri relUri = new Uri(RequestPathAttribute.GetRestApiPath(sendObj), UriKind.Relative);
HttpResponseMessage response = client.SendJsonRequest(HttpMethod.Post, relUri, sendObj).Result;
PurchaseOrder respObj = response.DeseriaseXmlResponse<PurchaseOrder>();
Example how to call with using gzip:
Uri baseUri = new Uri("http://webServiceHost:15002");
RestApiClient client = new RestApiClient(baseUri, request =>
{
request.Headers.Add("CustomHeader", "CustomHeaderValue");
RestApiClientExtensions.ApplyAcceptEncodingSettingGZip(request);
});
PurchaseOrder sendObj = new PurchaseOrder();
HttpResponseMessage response = client.SendXmlRequest(HttpMethod.Post, new Uri("res", UriKind.Relative), sendObj).Result;
PurchaseOrder respObj = response.DeseriaseXmlResponse<PurchaseOrder>();
Where Web Service should have:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddResponseCompression();
...
}
public void Configure(IApplicationBuilder app)
{
...
app.UseResponseCompression();
...
}
Example how to call with Data Contract XML:
Uri baseUri = new Uri("http://webServiceHost:15002");
RestApiClient client = new RestApiClient(baseUri);
PurchaseOrder sendObj = new PurchaseOrder();
Uri relUri = new Uri(RequestPathAttribute.GetRestApiPath(sendObj), UriKind.Relative);
HttpResponseMessage response = client.SendJsonRequest(HttpMethod.Post, relUri, sendObj).Result;
PurchaseOrder respObj = response.DeseriaseDcXmlResponse<PurchaseOrder>();
Where the Models:
[DataContract (Namespace ="http://purchase.Interface.org/Purchase.Order")]
[RequestPath("add/purchase/order")]
public class PurchaseOrder
{
public PurchaseOrder()
{
billTo = new Address() { street = "Bill to Address" };
shipTo = new Address() { street = "Ship to Address" };
}
[DataMember]
public Address billTo;
[DataMember]
public Address shipTo;
}
[DataContract(Namespace = "http://purchase.Interface.org/Purchase.Order.Address")]
public class Address
{
[DataMember]
public string street;
}
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. |
.NET Core | netcoreapp3.0 is compatible. netcoreapp3.1 is compatible. |
.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. |
-
.NETCoreApp 3.0
- Newtonsoft.Json (>= 12.0.3)
-
.NETCoreApp 3.1
- Newtonsoft.Json (>= 12.0.3)
-
.NETStandard 2.1
- Newtonsoft.Json (>= 12.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Singed assembly. Release: netstandard2.1;netcoreapp3.0;netcoreapp3.1; includes gzip response support; async extensions;