Plinth.HttpApiClient
1.5.4
dotnet add package Plinth.HttpApiClient --version 1.5.4
NuGet\Install-Package Plinth.HttpApiClient -Version 1.5.4
<PackageReference Include="Plinth.HttpApiClient" Version="1.5.4" />
paket add Plinth.HttpApiClient --version 1.5.4
#r "nuget: Plinth.HttpApiClient, 1.5.4"
// Install Plinth.HttpApiClient as a Cake Addin
#addin nuget:?package=Plinth.HttpApiClient&version=1.5.4
// Install Plinth.HttpApiClient as a Cake Tool
#tool nuget:?package=Plinth.HttpApiClient&version=1.5.4
README
Plinth.HttpApiClient
HTTP Api Client framework built on MS HttpClient
Adds logging and tracing to HttpClient based API clients.
There are two supported approaches to building clients, autogenerated clients and manually built clients.
Auto generating clients with nswag
- install nodejs at least 12+
npm install -g nswag
- run this command, substituting the link to the swagger spec
nswag openapi2csclient /runtime:net60 '/input:http://localhost:5000/swagger/v1/swagger.json' \
/classname:NSwagClient /namespace:My.Project.Client /output:NSwagClient.cs \
/operationGenerationMode:SingleClientFromOperationId /generateClientInterfaces:true \
/injectHttpClient:true /disposeHttpClient:false /useBaseUrl:false /generateOptionalParameters:true \
'/excludedParameterNames:X-Plinth-Auth'
Documentation for configuration options: https://github.com/RicoSuter/NSwag/wiki/NSwag-Configuration-Document
- Register the client during Startup
services.AddHttpApiHandlerClient<INSwagClient, NSwagClient>(
"NSwagClient",
configureClient: c =>
{
c.BaseAddress = new Uri("http://localhost:5000");
});
Manually building clients
Build a manual api client by deriving from BaseHttpApiClient
and implementing API methods using HttpRequestMessage
extensions. Example below:
public class MyClient : BaseHttpApiClient
{
public MyClient(HttpClient client) : base("MyApi", client)
{
}
public async Task<ModelObject?> GetThing(int parameter)
{
return await HttpGet("/api/values/thing")
.AddQueryParameter("param", parameter)
.ExecuteAsync<ModelObject>();
}
public async Task<ModelObject?> CreateThing(ModelObject modelObject)
{
return await HttpPost("/api/values/thing")
.SetJsonBody(modelObject)
.SetAuthorization("myApiToken")
.ExecuteAsync<ModelObject>();
}
Product | Versions |
---|---|
.NET | net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows |
-
net6.0
- Microsoft.Extensions.Configuration.Abstractions (>= 7.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Http (>= 7.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 7.0.0)
- Microsoft.SourceLink.Bitbucket.Git (>= 1.1.1)
- Plinth.Common (>= 1.5.4)
- Plinth.HttpApiClient.Common (>= 1.5.4)
- Plinth.Serialization (>= 1.5.4)
-
net7.0
- Microsoft.Extensions.Configuration.Abstractions (>= 7.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Http (>= 7.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 7.0.0)
- Microsoft.SourceLink.Bitbucket.Git (>= 1.1.1)
- Plinth.Common (>= 1.5.4)
- Plinth.HttpApiClient.Common (>= 1.5.4)
- Plinth.Serialization (>= 1.5.4)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Plinth.HttpApiClient:
Package | Downloads |
---|---|
Plinth.HttpApiClient.Polly
Polly extensions for Plinth.HttpApiClient |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.5.4 | 144 | 3/7/2023 |
1.5.3 | 89 | 3/3/2023 |
1.5.2 | 184 | 1/11/2023 |
1.5.2-b92.7c961f5f | 55 | 1/11/2023 |
1.5.0 | 387 | 11/9/2022 |
1.5.0-b88.7a7c20cd | 57 | 11/9/2022 |
1.4.7 | 2,044 | 10/20/2022 |
1.4.6 | 554 | 10/17/2022 |
1.4.5 | 537 | 10/1/2022 |
1.4.4 | 570 | 8/16/2022 |
1.4.3 | 434 | 8/2/2022 |
1.4.2 | 518 | 7/19/2022 |
1.4.2-b80.7fdbfd04 | 86 | 7/19/2022 |
1.4.2-b74.acaf86f5 | 75 | 6/15/2022 |
1.4.1 | 774 | 6/13/2022 |
1.4.0 | 539 | 6/6/2022 |
1.3.8 | 2,344 | 4/12/2022 |
1.3.7 | 479 | 3/21/2022 |
1.3.6 | 439 | 3/17/2022 |
1.3.6-b67.ca5053f3 | 81 | 3/16/2022 |
1.3.6-b66.4a9683e6 | 77 | 3/16/2022 |
1.3.5 | 484 | 2/23/2022 |
1.3.4 | 677 | 1/20/2022 |
1.3.3 | 418 | 12/29/2021 |
1.3.2 | 397 | 12/11/2021 |
1.3.1 | 288 | 11/12/2021 |
1.3.0 | 293 | 11/8/2021 |
1.2.3 | 1,479 | 9/22/2021 |
1.2.2 | 583 | 8/20/2021 |
1.2.1 | 449 | 8/5/2021 |
1.2.0 | 851 | 8/1/2021 |
1.2.0-b37.a54030b9 | 116 | 6/24/2021 |
1.1.6 | 5,499 | 3/22/2021 |
1.1.5 | 1,237 | 3/9/2021 |
1.1.4 | 2,257 | 2/27/2021 |
1.1.3 | 839 | 2/17/2021 |
1.1.2 | 866 | 2/12/2021 |
1.1.1 | 1,174 | 2/1/2021 |
1.1.0 | 907 | 12/16/2020 |
1.1.0-b27.b66c309b | 242 | 11/15/2020 |
1.0.12 | 2,561 | 10/18/2020 |
1.0.11 | 902 | 10/6/2020 |
1.0.10 | 971 | 9/30/2020 |
1.0.9 | 1,062 | 9/29/2020 |
1.0.8 | 1,090 | 9/26/2020 |
1.0.7 | 1,021 | 9/19/2020 |
1.0.6 | 949 | 9/3/2020 |
1.0.5 | 1,164 | 9/2/2020 |
1.0.4 | 1,310 | 9/1/2020 |
1.0.3 | 950 | 9/1/2020 |
1.0.2 | 931 | 8/29/2020 |
1.0.1 | 953 | 8/29/2020 |
1.0.0 | 953 | 8/29/2020 |
1.0.0-b1.c22f563d | 206 | 8/28/2020 |
net7.0 support and removed netcoreapp3.1