如何在Azure函数中动态更改对API的Ajax调用? 更新-添加图片

我正在遍历数组,并且foreach项正在对azure函数进行api调用。

我需要将'ticketKey'传递给azure,然后将工单密钥附加到我要求azure进行的呼叫中。

试图在ajax调用的请求标头中发送票证密钥,但不确定如何在azure代码中接收该票证并将其附加到我在那里进行的调用中。

需要明确的是,ajax请求转到了azure函数,然后该函数运行您在初始ajax调用下面看到的代码。

我需要以某种方式获取ajax调用(ticketKey)的内容,并将其附加到azure函数调用

(var content = await client.GetStringAsync(https://blah.com/rest/api/2/issue/{ticketKey})

我的Ajax呼叫:

 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] }
zoujitao 回答:如何在Azure函数中动态更改对API的Ajax调用? 更新-添加图片

您可以使用Headers中的HttpRequest来获取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}");

更新-添加图片

邮递员的最爱

Postman request

您可以看到我传递了ticketKey标头值和名为dummy的值

这是VS断点

enter image description here

本文链接:https://www.f2er.com/3145157.html

大家都在问