我面临一个问题,我需要在获取响应中向参数发送多个值。例如API is URL =https://localhost:9090?id=1&department=hr现在id我想发送1,2,3,4一个请求,我确实喜欢PARAMS = {'id': [1,2,3,4],'department'='hr'}r = requests.get(url = URL, params = PARAMS)它仍然没有给出期望的响应,因为它只显示了id =4. 有人可以帮我吗?
3 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
当给定一个序列时,请求会复制密钥,如您在官方文档中的示例中所见。
>>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
>>> r = requests.get('https://httpbin.org/get', params=payload)
>>> print(r.url)
https://httpbin.org/get?key1=value1&key2=value2&key2=value3
注意key2=value2和key2=value3,这是多个值的标准编码(还有其他值,例如逗号或分号分隔的值,或[]在 PHP 中后缀的“魔术”键名)。
但是,取决于您的服务器端框架,可能需要使用特殊 API 将值作为列表获取,否则您可能只得到第一个或最后一个,因为查询字符串被解释为 1:1 字典(这里你只得到最后一个一)。
所以你的解决方案是:
修复服务器端,使用任何适当的 API 来获取键的多个值
或者为多值查询字符串定义自己的编码,并在执行请求时显式使用它(以及在服务器端解析它时,除非框架具有对该编码的内置支持)
慕勒3428872
TA贡献1848条经验 获得超6个赞
通常字符串来回发送。在这种情况下,您可以尝试:
PARAMS = {'id': '1,2,3,4','department' : 'hr'}
在服务器端,您需要使用 id.split(',') 来解码 ID。然后你再次得到四个独立的值。
添加回答
举报
0/150
提交
取消