[BUG] Empty query params are discarded
nathanhi opened this issue · comments
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:
- Create simple function:
__init__.pyfunction.jsonimport azure.functions def main(req: azure.functions.HttpRequest): return str(req.params)
{ "scriptFile": "__init__.py", "bindings": [ { "authLevel": "anonymous", "type": "httpTrigger", "direction": "in", "name": "req", "methods": [ "get", "post" ] }, { "type": "http", "direction": "out", "name": "$return" } ] }
- Access function URL with query params
?paramwithvalue=foo¶mwithoutvalue
{"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.url
object:
__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
This issue has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for 4 days. It will be closed if no further activity occurs within 3 days of this comment.
Hello, I am still seeing this issue. Are there plans to fix this? There is a fix using UseNullableValueDictionaryForHttp
mentioned in the PowerShell worker regarding the same issue Azure/azure-functions-powershell-worker#895.
This issue has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for 4 days. It will be closed if no further activity occurs within 3 days of this comment.