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

发布于 2021-01-29 14:10:46

看来,当键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不理会这些数据而不是抛出错误?

关注者
0
被浏览
106
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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

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

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看