Home Azure Functions.- Http Trigger read query and post data
Post
Cancel

Azure Functions.- Http Trigger read query and post data

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&param2=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;
    }
}
This post is licensed under CC BY 4.0 by the author.