如何在Python的requests.get中发送嵌套字典作为请求参数?
在requests.get中发送嵌套字典作为请求参数的正确方式
方式一:利用requests默认的嵌套参数编码(生成key[subkey]格式)
requests原生支持嵌套字典的参数编码,会自动将嵌套结构转换为父键[子键]的格式,只要后端能识别这种格式即可。
你的代码实际会生成如下格式的请求URL(解码后):
Service URL/?query_params[list1]=&query_params[list2]=&query_params[list3]=&query_params[data]=something
如果后端可以解析这种格式,直接使用原代码即可。
方式二:将嵌套字典转为JSON字符串传递
如果后端期望接收完整的JSON结构作为query_params的值,可以先把嵌套字典序列化为JSON字符串,再作为参数传递:
import requests import json qp_args = {"query_params": json.dumps({ "list1": [], "list2": [], "list3": [], "data": "something" })} data = requests.get(url="Service URL", params=qp_args, timeout=2)
此时query_params的值是完整的JSON字符串,后端可以通过解析JSON还原嵌套字典结构。
方式三:手动构造符合后端要求的参数格式
如果后端有特定的参数格式规范,可以手动构造扁平化的参数字典:
import requests qp_args = { "query_params[list1]": [], "query_params[list2]": [], "query_params[list3]": [], "query_params[data]": "something" } data = requests.get(url="Service URL", params=qp_args, timeout=2)
这种方式和方式一效果一致,但更灵活,适合需要自定义参数格式的场景。
内容的提问来源于stack exchange,提问作者Abinash Biswal
相关产品推荐
相关产品推荐

