请求中数据和参数之间有什么区别?

时间:2015-11-03 10:36:37

标签: python python-requests params

我正在使用python requests模块,我之前发送了这样的参数:

requests.post(url=url, params=params)

但是今天,我发现我发送了这样的数据,它失败了,我改为:

requests.post(url=url, data=params)

那么没关系,dataparams之间有什么区别?

我发现请求有一个标题X-Requested-With:XMLHttpRequest,是不是因为这个?

3 个答案:

答案 0 :(得分:3)

根据requests documentationrequests.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)

打印

  

HTTP GET

文档在处理GET时使用params,在处理POST时使用data。这就是差异; GET与POST。

答案 1 :(得分:0)

request body中发送数据时,会在URI(http://www.answer.com/here?param1=1&param2=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()