如何将数组作为url参数传递给Azure函数
问题描述:
Azure函数有点问题参数 我知道url参数像往常一样发送到Azure函数“www.asdf.com?myParam =arnold”并被读取为像这如何将数组作为url参数传递给Azure函数
req.GetQueryNameValuePairs().FirstOrDefault(q => string.Compare(q.Key, "myParam", true) == 0).Value
我不明白的是如何发送数组作为参数。
答
一种方式是添加尽可能多的阵列的JSON如下
{
"comment": {
"body": "blablabla"
}
}
当然是送的参数是这样的:
www.asdf.com?myParam=arnold&myParam=james&myParam=william
,然后读取它们作为
var params = req
.GetQueryNameValuePairs()
.Where(q => string.Compare(q.Key, "myParam", true) == 0)
.Select(q => q.Value);
答
复杂的数据我建议你把它传递一个POST请求的JSON的身体,那么您可以在一个动态的对象或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}"
});
}
在这个例子中,请求主体在数据对象中被反序列化。请求主体包含注释属性和注释中有一个身体属性,如您可以根据需要
希望它可以帮助
这绝对是更大的有效载荷或复杂物体 –