Python中Requests模块发送post请求时json和data的区别

  • Post author:
  • Post published:2023年 2月 27日
  • Post last modified:2023年 2月 27日
  • Reading time:1 mins read

问题简答

带参数data发送请求时,Python是以发送表单的形式发送请求,我们在浏览器的请求头中可以看到Content-Type: application/x-www-form-urlencoded的字样,此时待发送的字典会被编码成`"a=1"的格式。

带参数json发送请求时,Python是发送json格式的字符串到服务器,可以在浏览器的请求头中看到Content-Type: application/json的字样,此时待发送的字典会被编码成 {"a": 1} 的格式。

应用策略

其实我们使用参数data也可以发送json格式的字符串,就是用json.dumps(dict)包一下我们的字典数据dict就可以了。某种程度上我们可以把json参数理解为一个“语法糖”,就是为了方便我们发送json格式数据而设计的。毕竟在使用data发送json参数时,需要导入json模块,然后再把数据包一下,打的字会变得更多嘛。

应用策略就是默认使用data发送字典数据,报错了就换用json再发一遍,或者检查一下浏览器头里面的Content-Type字段。