Python请求中"data"和"params"之间的区别?

tsc*_*zle 27 python python-requests

我很好奇data参数和请求中的params参数之间的区别是什么python-requests,以及何时应该使用它们.

一个例子是我有一个dicts数组,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"
}
Run Code Online (Sandbox Code Playgroud)

因为users是几百长,所以得到的字符串json.dumps(users)(以及URL本身也是如此)很长,我得到了错误{'status_code': 414, 'reason': 'Request-URI Too Large'}.这是一个案例,data还是应该遵循一些其他途径?谢谢!

Mar*_*ers 43

params在URL中形成查询字符串,data用于填充请求的正文(连同files).GET并且HEAD请求没有正文.

对于接受请求的大多数服务器POST,预计数据将作为请求主体传递.

您需要查阅您所调用的特定API的文档,以了解他们的期望,但如果您必须假设,则假设您必须使用data.