Skip to content

[BUG] Empty query params are discarded #894

Description

Investigative information

  • Timestamp: 1632902318
  • Function App name:
  • Function name(s) (as appropriate):
  • Core Tools version: 3.2.0-0 Commit hash: 5ffe001695be89a9b33cb569c875aef15938830b

Repro steps

Provide the steps required to reproduce the problem:
  1. Create simple function:
    __init__.py
    import azure.functions
    
    def main(req: azure.functions.HttpRequest):
        return str(req.params)
    function.json
    {
        "scriptFile": "__init__.py",
        "bindings": [
            {
                "authLevel": "anonymous",
                "type": "httpTrigger",
                "direction": "in",
                "name": "req",
                "methods": [
                    "get",
                    "post"
                ]
            },
            {
                "type": "http",
                "direction": "out",
                "name": "$return"
            }
        ]
    }
  2. Access function URL with query params ?paramwithvalue=foo&paramwithoutvalue
  3. {"paramwithvalue": "foo"} is returned

Expected behavior

I would expect the HttpRequest.params to contain all query params, defaulting to either a value of None or an empty string:

{
    "paramwithvalue": "foo",
    "paramwithoutvalue": ""
}

Actual behavior

The query parameter is silently discarded:

{
    "paramwithvalue": "foo"
}

Known workarounds

The query param can be retrieved via urllib.parse.parse_qs from the HttpRequest.urlobject:

__init__.py

from urllib.parse import parse_qs, urlparse

import azure.functions

def main(req: azure.functions.HttpRequest):
    return str(parse_qs(urlparse(req.url).query, keep_blank_values=True))

This will return the full set of params:

"{'paramwithvalue': ['foo'], 'paramwithoutvalue': ['']}"

Contents of the requirements.txt file:

azure-functions==1.7.2

Related information

This seems to be an underlying issue in the protobuf implementation and was already fixed in Azure/azure-functions-language-worker-protobuf#49

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions