为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕雪6442864 2022-07-12 15:22:35
我面临一个问题,我需要在获取响应中向参数发送多个值。例如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 字典(这里你只得到最后一个一)。

所以你的解决方案是:

  1. 修复服务器端,使用任何适当的 API 来获取键的多个值

  2. 或者为多值查询字符串定义自己的编码,并在执行请求时显式使用它(以及在服务器端解析它时,除非框架具有对该编码的内置支持)


查看完整回答
反对 回复 2022-07-12
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

通常字符串来回发送。在这种情况下,您可以尝试:

PARAMS = {'id': '1,2,3,4','department' : 'hr'}

在服务器端,您需要使用 id.split(',') 来解码 ID。然后你再次得到四个独立的值。


查看完整回答
反对 回复 2022-07-12
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

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



查看完整回答
反对 回复 2022-07-12
  • 3 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信