ApiCallManager 8.1.1
dotnet add package ApiCallManager --version 8.1.1
NuGet\Install-Package ApiCallManager -Version 8.1.1
<PackageReference Include="ApiCallManager" Version="8.1.1" />
paket add ApiCallManager --version 8.1.1
#r "nuget: ApiCallManager, 8.1.1"
// Install ApiCallManager as a Cake Addin #addin nuget:?package=ApiCallManager&version=8.1.1 // Install ApiCallManager as a Cake Tool #tool nuget:?package=ApiCallManager&version=8.1.1
ApiCallManager
REST API call manager
How to use ApiManager in ASP.NET Core Web API Projects
in asp.net core web api project you should add ApiManager in Service Container:
builder.Services.AddHttpClient();
builder.Services.AddScoped<ApiCallManager.IApiManager, ApiCallManager.ApiManager>();
Note that if you don't want to use HttpClientFactory, you can remove builder.Services.AddHttpClient();
line
Then Inject ApiManager service where you want and use it. In below example code ApiManager service injected into TestController:
[ApiController]
[Route("[controller]/[action]")]
public class TestController : ControllerBase
{
private IApiManager _apiManager;
private readonly ILogger<TestController> _logger;
public TestController(ILogger<TestController> logger, IApiManager apiManager)
{
_apiManager = apiManager;
_logger = logger;
}
[HttpGet]
public async Task<ActionResult> GetUsers()
{
var result = await _apiManager.GetAsync<List<User>>("https://gorest.co.in/public/v2/users");
if (result.IsSuccess)
{
return Ok(result.Result);
}
else
{
return Problem(
type: result?.Problem?.Type,
statusCode: result?.Problem?.Status,
title: result?.Problem?.Title,
detail: result?.Problem?.Detail
);
}
}
}
How to use ApiManager in Console or Windows Application Projects
in console applications or windows applications you can create a static instance of ApiManager inside a Helper class or in program global scope.
public class ClassHelper
{
public static IApiManager apiManager;
public static void ShowApiCallError(ValidationProblemDetails? error)
{
if (error != null)
{
MessageBox.Show($"Title: {error?.Title ?? "-"}\n\rDetails: {error?.Detail ?? "-"}", "API Call Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show($"An unknown error has occurred!", "API Call Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
Then in program startup or main form loading initial defined static ApiManager object.
private void Form1_Load(object sender, EventArgs e)
{
ClassHelper.apiManager = new ApiManager();
}
If you use Authorization in application, after user login to application and Access Token and Refresh Token recieved from Authorization server, Set Token in ApiManger:
private async void button_login_Click(object sender, EventArgs e)
{
string username = textBox_username.Text;
string password = textBox_password.Text;
var res = await LoginAsync(username, password);
if (res != null)
{
ClassHelper.apiManager.SetTokens(res.AccessToken, res.RefreshToken, "https://gorest.co.in/public/v2/refreshtoken", true);
}
}
Congratulation, you now call any web api using ApiManger easily.
public async Task<List<User>?> GetUsersAsync()
{
var result = await ClassHelper.apiManager.GetAsync<List<User>>("https://gorest.co.in/public/v2/users");
if (result.IsSuccess)
{
return result.Result;
}
else
{
ClassHelper.ShowApiCallError(result.Problem);
return null;
}
}
How to Send MultiPart form-data
int a = 25;
string b = "Text string";
MultipartFormDataContent content = new MultipartFormDataContent();
content.Add(new StringContent("IntParam"), a.ToString());
content.Add(new StringContent("StringParam"), b);
FileStream fs = new FileStream("C://TestFolder/myfile.png", FileMode.Open);
content.Add(new StreamContent(fs), "FileParam", "myfile.png");
var resutl = await ClassHelper.apiManager.PutAsync<MultipartFormDataContent, string>("https://myserver/testapi", content);
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net8.0
- Microsoft.AspNetCore.Mvc.Core (>= 2.1.38)
- Microsoft.Extensions.Http (>= 8.0.1)
- Newtonsoft.Json (>= 13.0.3)
- System.IdentityModel.Tokens.Jwt (>= 6.30.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
8.1.1 | 79 | 1/8/2025 | |
8.1.0 | 98 | 1/6/2025 | |
8.0.0 | 86 | 1/6/2025 | |
6.2.1 | 83 | 1/6/2025 | |
6.2.0 | 81 | 1/6/2025 | |
6.1.2 | 195 | 3/11/2024 | |
6.1.1 | 130 | 3/6/2024 | |
6.1.0 | 135 | 3/6/2024 | |
6.0.1 | 151 | 2/4/2024 | |
6.0.0 | 253 | 12/10/2023 | |
1.3.1 | 216 | 7/9/2023 | |
1.3.0 | 199 | 7/6/2023 | |
1.2.1 | 189 | 5/28/2023 | |
1.2.0 | 178 | 5/23/2023 | |
1.1.1 | 176 | 5/15/2023 | |
1.1.0 | 168 | 5/14/2023 |