TL;博士
哪些库/调用可用于处理包含与 parse_qs 不同的分号的查询字符串?
>>> urlparse.parse_qs("tagged=python;ruby")
>>> {'tagged': ['python']}
完整背景
我正在使用 StackExchange API 来搜索标记的问题。
搜索的布局是这样的,标签用分号分隔:
/2.1/search?order=desc&sort=activity&tagged=python;ruby&site=stackoverflow
与 API 交互就好了。当我想测试调用时,问题就出现了,特别是在使用httpretty模拟 HTTP 时。
在引擎盖下,httpretty
使用urlparse.parse_qs
python 标准库来解析查询字符串。
>>> urlparse.parse_qs("tagged=python;ruby")
{'tagged': ['python']}
显然这并不好。这是一个小例子,这里是 httpretty 的一个片段(在测试上下文之外)。
import requests
import httpretty
httpretty.enable()
httpretty.register_uri(httpretty.GET, "https://api.stackexchange.com/2.1/search", body='{"items":[]}')
resp = requests.get("https://api.stackexchange.com/2.1/search", params={"tagged":"python;ruby"})
httpretty_request = httpretty.last_request()
print(httpretty_request.querystring)
httpretty.disable()
httpretty.reset()
我想使用 httpretty 的机器,但需要一个解决方法parse_qs
。我现在可以修补 httpretty,但很想看看还能做什么。