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

rog*_*ger 5 python params python-requests

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

requests.post(url=url, params=params)
Run Code Online (Sandbox Code Playgroud)

但是今天,我发现我像这样发送数据,但失败了,我改成这样:

requests.post(url=url, data=params)
Run Code Online (Sandbox Code Playgroud)

那没关系,data和和有params什么区别?

我观察到请求有一个标头X-Requested-With:XMLHttpRequest,是因为这个吗?

ZN1*_*N13 5

根据请求文档, a requests.post(url, data=data)将发出HTTP POST请求,而requests.get(url, params=params)进行HTTP GET的a将在URL中传递参数,例如。

payload = {'key1': 'value1', 'key2': 'value2'}

r = requests.get("http://httpbin.org/get", params=payload)

print(r.url)
Run Code Online (Sandbox Code Playgroud)

版画

http://httpbin.org/get?key2=value2&key1=value1

该文档params在处理GET和dataPOST时使用。这就是区别;GET与POST。


the*_*man 5

首先,有两种不同的方法

  • requests.post() 发出 POST 请求(将所有参数放在正文中)
  • requests.get() 发出 GET 请求(将所有参数放在 URL 中)

然后,根据 docs,您可以在两个参数之间进行选择以发送所有键/值数据:

  • params=, 没有字符串修改。
  • data=,对参数应用表单编码字符串修改。

因此,您有 4 种选择来发送您的请求:

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

我认为目前接受的答案不正确。他实际上是在谈论requests.post()requests.get()在他自己的例子中使用。