Python请求库:数据与带有requests.post的json命名参数

W4t*_*ind 3 python python-requests

根据请求库文档的相关部分,将字典传递给post方法的主要方法如下:

r = requests.post(url, data = {"example": "request"})
Run Code Online (Sandbox Code Playgroud)

之后,作者演示了一个将JSON字符串直接传递到Github API的示例。然后,作者建议不要将字典编码为JSON字符串并通过传递data,而只需使用named参数json以如下方式传递字典。

r= requests.post(url, json = {"example": "request"})
Run Code Online (Sandbox Code Playgroud)

什么时候用json代替data?这种冗余是特有的还是故意的?

jwo*_*der 7

将传递dictdata会导致dict对进行表单编码,就像您在HTML页面上提交表单一样;例如,data={"example": "request"}将以形式发送到请求正文中example=request。的json关键字,在另一方面,它的编码作为JSON值参数而不是(和也设置Content-Type标头application/json)。