requests中post参数data和json区别:

发布时间 2023-09-14 16:07:56作者: 闲鱼卖闲鱼

HTTP 协议规定将一个完整的 HTTP 请求分为三个部分:请求头、请求行、请求体
大概框架如下:
<method> <request-URL> <version>
<headers>

<body>
POST http://httpbin.org HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8

a_test=112233&b_test=223344

post请求:
协议规定 post 请求的数据必须放在请求主体中,但没有说明提交的数据必须使用什么编码方式,所以我们可以自定义编码方式,只要格式满足以上协议中规定的格式即可。
由于编码方式可以自定义,在 CS 结构中,服务器不可能提前知道客户端的编码方式,所以服务器可以成功解析数据的前提就是通过某个字段告诉服务端客户发送数据时所使用的编码方式,这个字段就是 Content-Type

post请求编码方式:

  1.application/x-www-form-urlencoded(通过表单形式提交数据)
  浏览器原生 form 表单,如果不设置编码类型,最终提交数据时所用的就是这种编码方式。最常见的编码方式,由于浏览器原生支持,用途最广泛。
  Content-Type 字段被设置为 application/x-www-form-urlencoded,body 数据为 key/value 的形式,通过 URL 编码后使用 & 符号进行连接。大部分的服务端都支持这种编码方式,好多编程语言的默认编码方式就是这个
  POST http://httpbin.org HTTP/1.1
  Content-Type: application/x-www-form-urlencoded;charset=utf-8

  a_test=112233&b_test=223344

 

  2.application/json(通过json形式提交数据)
  这种编码方式可以提交比较复杂的结构化数据,方便各种类型的数据交互
  POST http://httpbin.org HTTP/1.1
  Content-Type: application/json;charset=utf-8

  {"test":"test123","test22":[111,222,333]}

 

综上所述:

  data参数:发送的数据默认使用 application/x-www-form=urlencoded 编码方式进行处理,Content-Type 字段的值为 application/x-www-form-urlencoded,请求数据在 form 表单字段中

  json参数:通过 application/json 编码发送的数据,Content-Type 字段的值为 application/json,请求数据在 json 字段中