How to read query string in a get call and how to read body content on a post call for Http Triger Azure Functions
Each escenary
Read Query
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Function("ReadQuery")]
public async Task<HttpResponseData> ReadQuery([HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequestData req)
{
// ../api/Function1?param1=Text 1¶m2=123
var data = System.Web.HttpUtility.ParseQueryString(req.Url.Query);
_logger.LogInformation($"Param 1: {data["param1"]}");
_logger.LogInformation($"Param 2: {data["param2"]}");
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
response.WriteString("Welcome to Azure Functions!");
return response;
}
Read Body
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Function("ReadBody")]
public async Task<HttpResponseData> ReadBody([HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req)
{
//{
// "param1": "Text 1",
// "param2": 123
//}
var body = await req.ReadAsStringAsync();
_logger.LogInformation($"Body: {body}");
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
response.WriteString("Welcome to Azure Functions!");
return response;
}
Read x-www-form-urlencoded data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[Function("ReadXwwFormData")]
public async Task<HttpResponseData> ReadXwwFormData([HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req)
{
var data = await req.ReadAsStringAsync();
// Parse as dictionary
var formValues = data!.Split('&')
.Select(x => x.Split('='))
.OrderBy(pair => pair[0])
.ToDictionary(pair => Uri.UnescapeDataString(pair[0]),
pair => Uri.UnescapeDataString(pair[1]));
foreach (var item in formValues)
{
_logger.LogInformation($"Key: {item.Key} - Value: {item.Value}");
}
//// Parse as query string
//var keyValues = HttpUtility.ParseQueryString(data);
//var text = keyValues["param1"];
//var userId = keyValues["param2"];
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
response.WriteString("Welcome to Azure Functions!");
return response;
}
Final class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
public class HttpTriggerFunctions
{
private readonly ILogger _logger;
public HttpTriggerFunctions(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<HttpTriggerFunctions>();
}
[Function("ReadQuery")]
public async Task<HttpResponseData> ReadQuery([HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequestData req)
{
var data = System.Web.HttpUtility.ParseQueryString(req.Url.Query);
_logger.LogInformation($"Param 1: {data["param1"]}");
_logger.LogInformation($"Param 2: {data["param2"]}");
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
response.WriteString("Welcome to Azure Functions!");
return response;
}
[Function("ReadBody")]
public async Task<HttpResponseData> ReadBody([HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req)
{
var body = await req.ReadAsStringAsync();
//{
// "param1": "Text 1",
// "param2": 123
//}
_logger.LogInformation($"Body: {body}");
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
response.WriteString("Welcome to Azure Functions!");
return response;
}
[Function("ReadXwwFormData")]
public async Task<HttpResponseData> ReadXwwFormData([HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req)
{
var data = await req.ReadAsStringAsync();
// Parse as dictionary
var formValues = data!.Split('&')
.Select(x => x.Split('='))
.OrderBy(pair => pair[0])
.ToDictionary(pair => Uri.UnescapeDataString(pair[0]),
pair => Uri.UnescapeDataString(pair[1]));
foreach (var item in formValues)
{
_logger.LogInformation($"Key: {item.Key} - Value: {item.Value}");
}
//// Parse as query string
//var keyValues = HttpUtility.ParseQueryString(data);
//var text = keyValues["param1"];
//var userId = keyValues["param2"];
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
response.WriteString("Welcome to Azure Functions!");
return response;
}
}