`rawQueryString` seems to be a string instead of bytes literals
See original GitHub issue👋 @erm, first let me thank you for this ~great~ awesome library, as the author of another proxy
for aws lambda I know this can be a 🕳️ sometimes.
I’m currently working on https://github.com/developmentseed/titiler which is a FastAPI based tile server. When deploying the lambda function using mangum and the new api gateway HTTP endpoint, most of my endpoints works except for the ones where I call request.url.scheme
e.g: https://github.com/developmentseed/titiler/blob/master/titiler/api/api_v1/endpoints/metadata.py#L59
and I get AttributeError: 'str' object has no attribute 'decode'
Logs
File "/tmp/pip-unpacked-wheel-a0vaawkp/titiler/api/api_v1/endpoints/metadata.py", line 59, in tilejson
File "/tmp/pip-unpacked-wheel-xa0z_c8l/starlette/requests.py", line 56, in url
File "/tmp/pip-unpacked-wheel-xa0z_c8l/starlette/datastructures.py", line 45, in __init__
AttributeError: 'str' object has no attribute 'decode'
So looking at my cloudwatch logs I can deduce:
-
in https://github.com/encode/starlette/blob/97257515f8806b8cc519d9850ecadd783b3008f9/starlette/datastructures.py#L45 starlette expect the
query_string
to be a byte literal
it seems that Mangum is getting the rawQueryString
for the event, and in my case I think this would be a string instead of a byte literal.
I’ll work on adding logging and test in my app to confirm this, but I wanted to share this to see if I was making sense 😉
Thanks
Issue Analytics
- State:
- Created 3 years ago
- Comments:5 (3 by maintainers)
Actually I ended up just pushing the 0.9.0 release (includes this change). Please follow-up if you run into any further issues.
Everything works now 😄 🎉 thanks so much