2017-06-04 146 views
0

Azure函数有点问题参数 我知道url参数像往常一样发送到Azure函数“www.asdf.com?myParam =arnold”并被读取为像这如何将数组作为url参数传递给Azure函数

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

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

回答

2

一种方式是添加尽可能多的阵列的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); 
1

复杂的数据我建议你把它传递一个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}" 
    }); 
} 

在这个例子中,请求主体在数据对象中被反序列化。请求主体包含注释属性和注释中有一个身体属性,如您可以根据需要

希望它可以帮助

+1

这绝对是更大的有效载荷或复杂物体 –

相关问题