Plinth.HttpApiClient
1.5.3
Prefix Reserved
See the version list below for details.
dotnet add package Plinth.HttpApiClient --version 1.5.3
NuGet\Install-Package Plinth.HttpApiClient -Version 1.5.3
<PackageReference Include="Plinth.HttpApiClient" Version="1.5.3" />
paket add Plinth.HttpApiClient --version 1.5.3
#r "nuget: Plinth.HttpApiClient, 1.5.3"
// Install Plinth.HttpApiClient as a Cake Addin #addin nuget:?package=Plinth.HttpApiClient&version=1.5.3 // Install Plinth.HttpApiClient as a Cake Tool #tool nuget:?package=Plinth.HttpApiClient&version=1.5.3
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 Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. 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 is compatible. 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. |
-
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.3)
- Plinth.HttpApiClient.Common (>= 1.5.3)
- Plinth.Serialization (>= 1.5.3)
-
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.3)
- Plinth.HttpApiClient.Common (>= 1.5.3)
- Plinth.Serialization (>= 1.5.3)
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.6.6 | 33 | 11/8/2024 |
1.6.5 | 303 | 8/31/2024 |
1.6.4 | 437 | 8/2/2024 |
1.6.3 | 1,022 | 5/15/2024 |
1.6.2 | 375 | 2/16/2024 |
1.6.1 | 2,502 | 1/5/2024 |
1.6.0 | 219 | 11/30/2023 |
1.5.10-b186.aca976b4 | 69 | 11/30/2023 |
1.5.9 | 164 | 11/29/2023 |
1.5.9-b174.64153841 | 75 | 11/23/2023 |
1.5.9-b172.dfc6e7bd | 64 | 11/17/2023 |
1.5.9-b171.4e2b92e2 | 73 | 11/4/2023 |
1.5.8 | 2,000 | 10/23/2023 |
1.5.7 | 4,767 | 7/31/2023 |
1.5.6 | 11,764 | 7/13/2023 |
1.5.5 | 248 | 6/29/2023 |
1.5.4 | 1,073 | 3/7/2023 |
1.5.3 | 320 | 3/3/2023 |
1.5.2 | 846 | 1/11/2023 |
1.5.2-b92.7c961f5f | 122 | 1/11/2023 |
1.5.0 | 630 | 11/9/2022 |
1.5.0-b88.7a7c20cd | 108 | 11/9/2022 |
1.4.7 | 5,178 | 10/20/2022 |
1.4.6 | 831 | 10/17/2022 |
1.4.5 | 811 | 10/1/2022 |
1.4.4 | 805 | 8/16/2022 |
1.4.3 | 706 | 8/2/2022 |
1.4.2 | 762 | 7/19/2022 |
1.4.2-b80.7fdbfd04 | 129 | 7/19/2022 |
1.4.2-b74.acaf86f5 | 119 | 6/15/2022 |
1.4.1 | 1,019 | 6/13/2022 |
1.4.0 | 791 | 6/6/2022 |
1.3.8 | 2,640 | 4/12/2022 |
1.3.7 | 733 | 3/21/2022 |
1.3.6 | 699 | 3/17/2022 |
1.3.6-b67.ca5053f3 | 135 | 3/16/2022 |
1.3.6-b66.4a9683e6 | 128 | 3/16/2022 |
1.3.5 | 776 | 2/23/2022 |
1.3.4 | 948 | 1/20/2022 |
1.3.3 | 679 | 12/29/2021 |
1.3.2 | 600 | 12/11/2021 |
1.3.1 | 509 | 11/12/2021 |
1.3.0 | 479 | 11/8/2021 |
1.2.3 | 1,682 | 9/22/2021 |
1.2.2 | 791 | 8/20/2021 |
1.2.1 | 651 | 8/5/2021 |
1.2.0 | 2,159 | 8/1/2021 |
1.2.0-b37.a54030b9 | 161 | 6/24/2021 |
1.1.6 | 6,305 | 3/22/2021 |
1.1.5 | 1,637 | 3/9/2021 |
1.1.4 | 2,738 | 2/27/2021 |
1.1.3 | 1,267 | 2/17/2021 |
1.1.2 | 1,260 | 2/12/2021 |
1.1.1 | 1,542 | 2/1/2021 |
1.1.0 | 1,312 | 12/16/2020 |
1.1.0-b27.b66c309b | 284 | 11/15/2020 |
1.0.12 | 3,504 | 10/18/2020 |
1.0.11 | 1,346 | 10/6/2020 |
1.0.10 | 1,403 | 9/30/2020 |
1.0.9 | 1,461 | 9/29/2020 |
1.0.8 | 1,492 | 9/26/2020 |
1.0.7 | 1,459 | 9/19/2020 |
1.0.6 | 1,420 | 9/3/2020 |
1.0.5 | 1,568 | 9/2/2020 |
1.0.4 | 1,729 | 9/1/2020 |
1.0.3 | 1,345 | 9/1/2020 |
1.0.2 | 1,344 | 8/29/2020 |
1.0.1 | 1,390 | 8/29/2020 |
1.0.0 | 1,403 | 8/29/2020 |
1.0.0-b1.c22f563d | 246 | 8/28/2020 |
net7.0 support and removed netcoreapp3.1