猿问

获取请求的参数中的键的多个值

我面临一个问题,我需要在获取响应中向参数发送多个值。


例如


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. 有人可以帮我吗?


慕雪6442864
浏览 113回答 3
3回答

慕莱坞森

当给定一个序列时,请求会复制密钥,如您在官方文档中的示例中所见。>>> 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

通常字符串来回发送。在这种情况下,您可以尝试:PARAMS = {'id': '1,2,3,4','department' : 'hr'}在服务器端,您需要使用 id.split(',') 来解码 ID。然后你再次得到四个独立的值。

哆啦的时光机

这很可能是服务器端问题。检查服务器是否id按预期解析字段。id如果您可以将服务器代码发布到正在解析该字段的位置,那就更好了。
随时随地看视频慕课网APP

相关分类

Python
我要回答