我正在使用python requests
模块,我之前发送了这样的参数:
requests.post(url=url, params=params)
但是今天,我发现我发送了这样的数据,它失败了,我改为:
requests.post(url=url, data=params)
那么没关系,data
和params
之间有什么区别?
我发现请求有一个标题X-Requested-With:XMLHttpRequest
,是不是因为这个?
答案 0 :(得分:3)
根据requests documentation,requests.post(url, data=data)
会发出HTTP POST个请求,而requests.get(url, params=params)
的{{3}}会传递网址中的参数,例如。
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)
print(r.url)
打印
文档在处理GET时使用params
,在处理POST时使用data
。这就是差异; GET与POST。
答案 1 :(得分:0)
在request body中发送数据时,会在URI(http://www.answer.com/here?param1=1¶m2=2
)中发送(附加)参数。通常敏感数据或大量发送的数据会发布在正文中,因为它更容易secure,并且不会导致巨大的URI。
答案 2 :(得分:-1)
首先,有两种不同的方法:
requests.post()
发出POST请求(将所有参数放在正文中)requests.get()
发出GET请求(将所有参数放在URL中)然后according to the docs,您可以在两个参数之间进行选择,以发送所有键/值数据:
params=
,无需修改字符串。data=
,对参数应用格式编码的字符串修改。因此,您有4种选择来发送请求:
requests.post(url, params=)
requests.post(url, data=)
requests.get(url, params=)
requests.get(url, data=)
我认为当前接受的答案不正确。他实际上是在谈论requests.post()
,但在他自己的示例中使用的是requests.get()
。