看来,当键data的值为时None,请求不包含该键。
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请求可能没有编码null或None不可用-是这样吗?)
json.dumps(d)
null
另外感到好奇的是-为什么requests不理会这些数据而不是抛出错误?
requests
将字典元素设置为None就是您明确表示不希望将该参数发送到服务器的方式。
我在requests.Request()文档中找不到专门提到的内容,但是在“在URL中传递参数”中说:
requests.Request()
请注意,任何值为“无”的字典键都不会添加到URL的查询字符串中。
显然,它也对POST请求使用一致的逻辑。
POST
如果要发送空字符串,请将dictionary元素设置为空字符串,而不是None。