Merge params with existing URL query parameters instead of replacing#3761
Merge params with existing URL query parameters instead of replacing#3761veeceey wants to merge 1 commit intoencode:masterfrom
Conversation
…them When a URL already contains query parameters and the `params` argument is also provided, the existing query parameters are now merged with the new ones instead of being silently dropped. This aligns with the behavior of the `requests` library and matches user expectations. Fixes encode#3621
58e14dd to
38fe19f
Compare
|
Hi team, Given the criticality of this change, deploying a custom patch isn’t an option for us at the moment. Thanks in advance! |
|
Hi @naman-netomi, thanks for sharing your use case — I appreciate hearing that this fix would unblock your production upgrade. Unfortunately, release timelines are up to the httpx maintainers, so I can't speak to when this will land in a release. Hopefully the maintainers can weigh in when they get a chance. |
Summary
paramsparameter is set, the request parameters in the URL will disappear unexpectedly. #3621: When a URL already contains query parameters (e.g.https://example.com/path?page=1&s=list) and theparamsargument is also provided, the existing query parameters were silently dropped and replaced by only the newparams. This was inconsistent with therequestslibrary and surprised users.Request.__init__to useURL(url).copy_merge_params(params)instead ofURL(url, params=params), so existing URL query parameters are preserved and merged with the new ones.test_request_paramsto reflect the new merge behavior and added an additional test case for overlapping keys.Before (broken)
After (fixed)
Test plan
test_request_paramsupdated and passes