记录:json和字典的区别,json和字段的相互转化;postman发送请求与Python中代码发送请求的区别。
安装:
pip install requests
官方文档:https://docs.python-requests.org/zh_CN/latest/
1、导入requests
2、requests的请求方法:
requests.get(url,param=None) 发起get请求。params是请求参数,是追加在url后面的。字典类型。
requests.post(url,data=None,json=None) 发起post请求:
data参数:任意的content-type都可以用参数传参。
不指明content-type的情况下,默认的content-type是x-www-form-urlencoded,且是字典格式。
如果是其它的content-type,需要在headers当中,加上content-type类型。
json参数: 给content-type为application/json格式使用的。
字典类型 不需要在header当中指定content-type
以上2个方法,都是使用的requests.request(method,url,**kwargs)
Requests类 -
Response类 -
resp.headers是响应头
resp.status_code是响应状态码
resp.text是字符串类型
学习地址:https://www.w3cschool.cn/json/
一些区别:
字符串:
json: 双引号。
python字典:单引双号都可以。
python: None
java/javascript: null(python不认识。如果响应结果当中有null, 需要转换成None)
布尔值:
json: true,false
python:True, False
字典:数据类型。
json: 数据格式。 json格式的字符串
注意:json其实是字符串(只不过这种字符串是格式化了的字符串,也就是长得像字典的字符串),字典是数据类型
json格式的字符串和字典之间的转换:json库
内置库:json
json.loads(json串) 把json串,转换成python字典
json.dumps(python字典对象,indent=空格个数) 把python字典,转换成json串。indent是格式化展示json串
可以这样记忆:load向下(向下就更高级转化成字典),dump向上(向上就是向原始数据转化,就是字符串)
关于requests处理json参数的文章:
https://www.cnblogs.com/Simple-Small/p/9830270.html
举例(不完善):
建议看我另一篇文章有详细阐述(Python中的接口测试中关于request方法中的json和data参数接收数据的区别_python request接收json_宏基骑士的博客-CSDN博客)
免费公开的api: 聚合数据 - https://www.juhe.cn/docs?bd_vid=7361015517896645400
举例(一个登录接口):
url: http://mall.lemonban.com:8108/adminLogin
请求数据:
t(可选): 时间戳(13位) int(time.time()*1000)
principal(必传): 用户名
credentials(必传): 密码
sessionUUID(可选):uuid
imageCode(必传): 验证码
注意点:
1、关于Python生成UUID
文章:https://blog.csdn.net/yl416306434/article/details/80569688
2、验证码:
1)万能验证码:lemon
2)第三方打码平台: 图鉴(http://www.ttshitu.com/)
代码截图(验证码为万能验证码时):
举例:
1、登录后台管理
2、添加一个商品
3、注册前台用户
4、登录前台用户
5、购买、下订单、支付
第一种写法(直接拿取postman当中的Python写法)
另一种写法(不使用json库去序列化字典):
注意:我们从第二写法很第一种写法对比,发现第二种写法少了请求头,那么想想这是为什么呢?
因为,我们使用第一种方式时,原本data默认的是x-www-form-urlencoded这种格式,是不需要指明请求头的,那么使用其他格式的时候,需要在请求头里面指明 'Content-Type': 'application/json'。当然这里只是针对data传参才会特别去指明请求头。
如果使用的是第二方式,那么就不需要在请求头里面指明 'Content-Type': 因为有个关键字参数json,这个就直接自动转化成了json格式的字符串,其实对应postman中,就是raw(原始数据),而这个原始时间就是json格式。
也就是说:Python里面提供了2种处理数据的方式。就看看自己喜欢用哪种了。
暂无