httpx
httpx copied to clipboard
httpx is deleting url query parameters that do not explicitly specify a value
The following program
import asyncio
import httpx
async def main():
async with httpx.AsyncClient() as client:
r = await client.get("https://httpbin.org/get?foobar", params={'hello': "world"})
print(r.url)
asyncio.run(main())
should print https://httpbin.org/get?hello=world&foobar
However, the actual output is https://httpbin.org/get?hello=world
It appears that httpx is deleting url query parameters that do not explicitly specify a value.
Thanks for having a look
Good afternoon!
This case reproduce in httpx.Client. If such behaviour is bug, I want to fix it
It appears that httpx is deleting url query parameters that do not explicitly specify a value.
To determine if your assessment here is correct, try the same example but with foobar=something.
@tomchristie you're right if use key-value pair in url, it's work. But what to do in case of query param without value (only key). In this discussion I found the opinion, that query can contain query param wiithout value
It appears that httpx is deleting url query parameters that do not explicitly specify a value.
To determine if your assessment here is correct, try the same example but with
foobar=something.
It works fine? That isn't related to the bug I'm reporting however. Have you tried running my example? Url parameters that do not have an explicit value are being deleted.
To determine if your assessment here is correct, try the same example but with foobar=something.
It works fine? That isn't related to the bug I'm reporting however.
Great, so we've determined that your assessment is correct. This is specifically occurring for parameters without a value.
So, yes, that looks broken to me.
Confirmed this to myself with...
import httpx
r = httpx.get("https://httpbin.org/get?foobar", params={'hello': "world"})
print(r.request.url) # https://httpbin.org/get?hello=world
r = httpx.get("https://httpbin.org/get?foobar=abc", params={'hello': "world"})
print(r.request.url) # https://httpbin.org/get?foobar=abc&hello=world