python request模块里面data、json、params传参方式的不同(使用httpbin工具测试)

本文探讨了Python requests模块在HTTP请求中data、json和params参数的使用区别。params仅适用于GET请求,添加到URL中;data和json用于POST请求,其中json默认Content-Type为application/json,而data默认为application/x-www-form-urlencoded。同时,文章通过重定向测试解释了HTTP 302响应如何导致浏览器自动发送新请求。
摘要由CSDN通过智能技术生成

1、json.dumps()和json.loads()是json格式处理函数
json.dumps()函数是将json(即dict)转化为str;
json.loads()函数是将str转化为json(即dict)。

2、requests模块发送请求有data、json、params三种携带参数的方法。
params在get请求中使用,data、json在post请求中使用。

params:字典或者字节序列,作为参数增加到url中,只能用于GET方法,不能使用在POST方法里面:

kv = {
   "wd": "cisco"}  # 拼接的内容用字典储存
response = requests.request("GET", "https://www.baidu.com/s", params=kv)
print(response.url)  # https://www.baidu.com/s?wd=cisco
print(response.text)

data和json的区别:

1、json传参,不管参数是str还是dict,如果不指定headers中的Content-Type,默认为application/json

2、data传参,参数为dict时,如果不指定Content-Type,默认为application/x-www-form-urlencoded,相当于普通form表单提交的形式,此时数据可以从request.post里面获取,而request.body的内容则为a=1&b=2的这种形式,注意,即使指定content-type=application/json,request.body的值也是类似于a=1&b=2,所以并不能用json.loads(request.body.decode())得到想要的值

3、data传参,参数为str时,如果不指定Content-Type,经过测试,requests模块并不会设置Content-Type

例:

import requests
import json


class TestRequest:
    def test_get(self):
        kv = {
   "wd": "cisco"}  # 拼接的内容用字典储存
        response = requests.request("GET"<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值