如何将数组作为url参数传递给Azure函数

时间:2017-06-04 13:20:58

标签: c# azure http azure-functions

Azure Functions参数有点问题 我知道url参数像往常一样发送到Azure功能“www.asdf.com?myParam=arnold”并且像这样阅读

req.GetQueryNameValuePairs().FirstOrDefault(q => string.Compare(q.Key, "myParam", true) == 0).Value

我不明白的是如何将数组作为参数发送。

2 个答案:

答案 0 :(得分:4)

一种方法是发送如下参数:

csv

然后将其视为

www.asdf.com?myParam=arnold&myParam=james&myParam=william

答案 1 :(得分:1)

对于复杂数据我建议你将它作为json传递给POST请求的主体,然后你可以在动态对象或Jobject或你可以定义的自定义类中反序列化它。以下是Azure文档

中的示例
#r "Newtonsoft.Json"

using System;
using System.Net;
using System.Threading.Tasks;
using Newtonsoft.Json;

public static async Task<object> Run(HttpRequestMessage req, TraceWriter log)
{    
    string jsonContent = await req.Content.ReadAsStringAsync();
    dynamic data = JsonConvert.DeserializeObject(jsonContent);

    log.Info($"WebHook was triggered! Comment: {data.comment.body}");

    return req.CreateResponse(HttpStatusCode.OK, new {
        body = $"New GitHub comment: {data.comment.body}"
    });
}

在此示例中,请求正文在数据对象中反序列化。请求正文包含一个comment属性,comment包含一个body属性,如下所示

{
    "comment": {
        "body": "blablabla"
    }
}

当然在json中你可以根据需要添加任意数量的数组

希望有所帮助