从 Azure 函数调用 Asp.Net Web API 端点
Calling Asp.Net Web API endpoint from Azure function
我正在尝试使用 Azure 函数开发以下场景。
我开发了 Asp.Net Web API 来处理与数据库相关的操作。现在,我想实现一个类似调度程序的功能,它每天 运行 一次,并从数据库中清除垃圾数据。我已经在我的 Web API 中为此创建了一个端点,但我想定期执行它,所以我想使用 Azure 函数的 TimerTrigger 函数来实现调度程序,有什么方法可以调用我的 Web api TimerTrigger 函数中的端点。
如何在 Azure 函数中处理我的 api 身份验证?
谢谢
更新:
根据 mikhail 的回答,我最终使用以下代码获得了令牌:
var client = new HttpClient();
client.BaseAddress = new Uri(apirooturl);
var grant_type = "password";
var username = "username";
var password = "password";
var formContent = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", grant_type),
new KeyValuePair<string, string>("username", username),
new KeyValuePair<string, string>("password", password)
});
var token = client.PostAsync("token", formContent).Result.Content.ReadAsAsync<AuthenticationToken>().Result;
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(token.token_type, token.access_token);
var response = await client.GetAsync(apiendpoint);
var content = await response.Content.ReadAsStringAsync();
Azure Function 运行 在普通的 Web 应用程序中,因此您几乎可以在那里做任何事情。假设您使用的是 C#,函数体可能类似于
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
var response = await client.GetAsync(url);
var content = await response.Content.ReadAsStringAsync();
您最好将整个数据库清理逻辑放在函数中并使其由计时器触发,这样您就可以将 API 完全排除在外。
我正在尝试使用 Azure 函数开发以下场景。
我开发了 Asp.Net Web API 来处理与数据库相关的操作。现在,我想实现一个类似调度程序的功能,它每天 运行 一次,并从数据库中清除垃圾数据。我已经在我的 Web API 中为此创建了一个端点,但我想定期执行它,所以我想使用 Azure 函数的 TimerTrigger 函数来实现调度程序,有什么方法可以调用我的 Web api TimerTrigger 函数中的端点。
如何在 Azure 函数中处理我的 api 身份验证?
谢谢
更新:
根据 mikhail 的回答,我最终使用以下代码获得了令牌:
var client = new HttpClient();
client.BaseAddress = new Uri(apirooturl);
var grant_type = "password";
var username = "username";
var password = "password";
var formContent = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", grant_type),
new KeyValuePair<string, string>("username", username),
new KeyValuePair<string, string>("password", password)
});
var token = client.PostAsync("token", formContent).Result.Content.ReadAsAsync<AuthenticationToken>().Result;
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(token.token_type, token.access_token);
var response = await client.GetAsync(apiendpoint);
var content = await response.Content.ReadAsStringAsync();
Azure Function 运行 在普通的 Web 应用程序中,因此您几乎可以在那里做任何事情。假设您使用的是 C#,函数体可能类似于
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
var response = await client.GetAsync(url);
var content = await response.Content.ReadAsStringAsync();
您最好将整个数据库清理逻辑放在函数中并使其由计时器触发,这样您就可以将 API 完全排除在外。