c# - 如何在 azure 函数中动态更改对 api 的 ajax 调用?
问题描述
我正在迭代一个数组,并且我正在对 azure 函数进行 api 调用。
我需要将“ticketKey”传递给 azure,然后将 ticketkey 附加到我要求 azure 进行的呼叫中。
尝试在 ajax 调用的请求标头中发送ticketkey,但不确定如何在 azure 代码中接收它并将其附加到我从那里进行的调用。
为了清楚起见,ajax 请求转到 azure 函数,然后运行您在初始 ajax 调用下方看到的代码。
我需要以某种方式获取 ajax 调用的内容(ticketKey)
并将其附加到 azure 函数调用
(var content = await client.GetStringAsync(https://blah.com/rest/api/2/issue/{ticketKey})
我的阿贾克斯电话:
var GetTicketInfo = myArray.forEach(function(ticketKey){
$.ajax
({
type: "GET",
url: "https://blahblah.azurewebsites.net/api/blahblah",
dataType: 'json',
headers : {"ticketKey": ticketKey},
async: false,
success: function (res){
console.log(res);
}
});
});
我的 Azure 函数代码:
public static class azureApicall
{
[FunctionName("AzureCall")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
var client = new HttpClient();
var user = "blah";
var pass = "blah";
var pair = $"{user}:{pass}";
var bytes = Encoding.ASCII.GetBytes(pair);
var base64 = Convert.ToBase64String(bytes);
var authValue = $"Basic {base64}";
client.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse(authValue);
client.DefaultRequestHeaders.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/json"));
var content = await client.GetStringAsync("https://blah.com/rest/api/2/issue/{ticketKey}");
return (ActionResult)new OkObjectResult(content);
}
}
我调试时的错误消息:
[08/11/2019 11:08:02] Host lock lease acquired by instance ID '0000000000000000000000000359A6B5'.
[08/11/2019 11:08:02] Executing HTTP request: {
[08/11/2019 11:08:02] "requestId": "4739380b-c445-4bb9-8bbc-dd27e1682a63",
[08/11/2019 11:08:02] "method": "POST",
[08/11/2019 11:08:02] "uri": "/api/ConfluenceWidgetTeamCity"
[08/11/2019 11:08:02] }
[08/11/2019 11:08:03] Executing 'ConfluenceWidgetTeamCity' (Reason='This function was programmatically called via the host APIs.', Id=72e4c354-299d-4105-9e3d-56a119c5cd6a)
[08/11/2019 11:08:03] C# HTTP trigger function processed a request.
[08/11/2019 11:08:03] Executed 'ConfluenceWidgetTeamCity' (Succeeded, Id=72e4c354-299d-4105-9e3d-56a119c5cd6a)
[08/11/2019 11:08:03] Executed HTTP request: {
[08/11/2019 11:08:03] "requestId": "4739380b-c445-4bb9-8bbc-dd27e1682a63",
[08/11/2019 11:08:03] "method": "POST",
[08/11/2019 11:08:03] "uri": "/api/ConfluenceWidgetTeamCity",
[08/11/2019 11:08:03] "identities": [
[08/11/2019 11:08:03] {
[08/11/2019 11:08:03] "type": "WebJobsAuthLevel",
[08/11/2019 11:08:03] "level": "Admin"
[08/11/2019 11:08:03] }
[08/11/2019 11:08:03] ],
[08/11/2019 11:08:03] "status": 400,
[08/11/2019 11:08:03] "duration": 579
[08/11/2019 11:08:03] }
解决方案
您可以使用Headers
fromHttpRequest
获取您的 ticketKey。例子
req.Headers.TryGetValue("ticketKey", out var result);
var ticketKey= result.FirstOrDefault();
然后您可以ticketKey
在请求中使用变量的值。
var content = await client.GetStringAsync($"https://blah.com/rest/api/2/issue/{ticketKey}");
更新 - 添加图像
邮递员的要求
如您所见,我将ticketKey
标头值与名为的值一起传递dummy
这是VS断点
推荐阅读
- javascript - 如何为 Webpack 4 中的每个输出导出 contenthash 值?
- clang - Xcode 11 ld 错误“您的二进制文件不是 /usr/lib/libcrypto.dylib 的允许客户端”
- javascript - 匹配一半在标签内一半在外面的字符串
- javascript - *ngFor 在获取新数据之前正在更新
- dialogflow-es - 如何在对话流中集成 Facebook Messenger 和默认响应
- python - 如果存在重复值,如何返回 True 和 false
- flutter - Flutter:导入外部列表的正确方法
- django - Django Rest 框架权限类或 Django 中间件 - 执行验证的最佳选择是哪个?
- c# - 如何在没有 DI 的情况下将 AutoMapper 9 与静态实现一起使用?
- scadalts - 如何使用 ScadaLTS 每分钟将值从一台设备传输到另一台设备?