Python requests中“data”和“params”的区别是什么?

53 投票
1 回答
31330 浏览
提问于 2025-04-18 11:53

我很好奇在使用 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)。需要注意的是,GETHEAD 请求是没有主体的。

对于大多数接受 POST 请求的服务器来说,数据通常是通过请求的 主体 传递的。

你需要查看你所调用的具体 API 的文档,了解他们的要求,但如果不确定的话,可以假设需要使用 data

撰写回答