Python requests中“data”和“params”的区别是什么?
我很好奇在使用 python-requests
发请求时,data
参数和 params
参数有什么区别,以及什么时候应该使用它们。
举个例子,我有一个字典数组 users=[{"email_hash": "fh7834uifre8houi3f"}, ... ]
,我想用 POST 方法(requests.post()
)发送这个数据:
params = {
"ads_token": blah blah,
"user_id": blah blah,
"users": json.dumps(users) # users=[{"email_hash": "fh7834uifre8houi3f"}, ... ]
"hash_type": "md5"
}
但是因为 users
数组有几百个元素,所以通过 json.dumps(users)
转换后的字符串(也就是最终的 URL)非常长,导致我收到一个错误 {'status_code': 414, 'reason': 'Request-URI Too Large'}
。这种情况下我应该使用 data
吗?还是说有其他更好的方法?谢谢!
1 个回答
77
params
是 URL 中的 查询字符串,而 data
则是用来填充请求的 主体(还有 files
)。需要注意的是,GET
和 HEAD
请求是没有主体的。
对于大多数接受 POST
请求的服务器来说,数据通常是通过请求的 主体 传递的。
你需要查看你所调用的具体 API 的文档,了解他们的要求,但如果不确定的话,可以假设需要使用 data
。