[英]what is the difference between data and params in requests?
我正在使用python requests
模块,我之前发送我的参数是这样的:
requests.post(url=url, params=params)
但是今天,我发现我这样发送我的数据,它失败了,我改成这样:
requests.post(url=url, data=params)
那么没关系, data
和params
有什么区别?
我观察到请求有一个标头X-Requested-With:XMLHttpRequest
,是因为这个吗?
requests.post(url, data=data)<\/code>将发出
HTTP POST<\/a>请求,并且
<\/li>
requests.get(url, params=params)<\/code>将发出
HTTP GET<\/a>请求
<\/li><\/ul>
下面是如何在 GET 中使用参数:
哪个输出
请注意,有效负载最终出现在 URL 的查询字符串<\/a>中。 由于它们最终到达那里,任何有权访问该 URL 的人都可以查看它们,这就是为什么您不应该将查询字符串用于密码等敏感数据的原因。
以下是如何在 POST 中使用数据:
哪个输出
请注意 POST 数据如何没有显示在查询字符串中,因为它们是通过请求的主体传输的。
对此答案的批评指出,还有更多选择。 我在最初的答案中从未否认过这样的事情,但让我们仔细看看。
文档示例始终显示:
- 用于 GET 的 params 关键字,以及<\/li>
- 用于 POST 的数据关键字<\/li><\/ul>
但这并不意味着它们是相互排斥的。
理论上,您可以在 POST 中将两者混合在一起:
哪个输出但是您不能将数据混合到 GET 中:输出:
注意数据字段是如何消失的。"
首先,有两种不同的方法<\/strong>:
requests.post()<\/code>发出 POST 请求(将所有参数放在正文中)
<\/li>
requests.get()<\/code>发出 GET 请求(将所有参数放在 URL 中)
<\/li><\/ul>
params=<\/code> ,没有字符串修改。
<\/li>
data=<\/code> ,对参数应用表单编码字符串修改。
<\/li><\/ul> 因此,您有 4 个选择来发送请求:
他实际上是在谈论requests.post()<\/code>但在他自己的示例中使用requests.get()<\/code> 。
"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.