当前位置: 首页 > 面试题库 >

为什么我不能使用Python的`requests`库将“无”作为数据发送到POST请求中?

长孙瑞
2023-03-14
问题内容

看来,当键data的值为时None,请求不包含该键。

>>> req = requests.Request('POST', 'http://google.com', data=dict(a=None, b=1))
>>> req.prepare().body
'b=1'

为什么会这样呢?我期望有一个空字符串,或类似json.dumps(d)whereNone呈现为的东西null。我敢肯定有充分的理由-
只是好奇。(我能想到的一件事可能就是POST请求可能没有编码nullNone不可用-是这样吗?)

另外感到好奇的是-为什么requests不理会这些数据而不是抛出错误?


问题答案:

将字典元素设置为None就是您明确表示不希望将该参数发送到服务器的方式。

我在requests.Request()文档中找不到专门提到的内容,但是在“在URL中传递参数”中说:

请注意,任何值为“无”的字典键都不会添加到URL的查询字符串中。

显然,它也对POST请求使用一致的逻辑。

如果要发送空字符串,请将dictionary元素设置为空字符串,而不是None



 类似资料:
  • 我正在创建自己的API(使用express)和react.js应用程序。但是,当我从react应用程序发送数据时,服务器不会检索数据。这是我的密码: 发布请求客户端: 服务器端POST请求检索: 你知道我怎么解决这个问题吗?

  • 本文向大家介绍python-requests POST请求,包括了python-requests POST请求的使用技巧和注意事项,需要的朋友参考一下 示例 POST请求是使用方法发出的。request.post() 如果您需要发送Web表单请求作为POST正文,请传入以键值对作为data参数的字典;requests会将它们编码为application/x-www-form-urlencoded模

  • 以下API使用postman工作: Spring boot,后端代码: ReactJS,前端代码:我在中有对象数组。 触发功能的按钮: 我需要将我的前端(ReactJS)代码更改为,就像我使用postman发布请求一样。当前JS代码导致以下错误响应: Servlet。路径为[]的上下文中的servlet[dispatcherServlet]的service()引发了异常[请求处理失败;嵌套异常为o

  • 我正在探索HTTP Origin检查作为Drupal在https://www.drupal.org/node/1803712的CSRF保护的想法 现在我正在测试Origin头是如何通过POST请求到达的,但是Firefox不会在用户登录表单提交上发送Origin头。Chromium和Chrome工作正常,他们发送Origin头。 Firefox版本是36.0.1。我还用一个干净的Firefox安装

  • 我正在尝试使用python和MySQL开发药房管理系统。但我在连接数据库时遇到了问题。 下面是一些代码:

  • 下面是我为nodemailer做的函数- 在这里,我已经在.env文件中给出了电子邮件id和密码,我正在下面使用这个功能。客户将从我的id获得一封邮件到他的电子邮件id中。 密码是正确的。但我遇到了这个错误- 错误:无效的登录名:534-5.7.9需要应用程序特定的密码。了解更多信息,请访问534 5.7.9 https://support.google.com/mail/?p=invalidse