requests详解
1、requests介绍
虽然Python的标准库中 urllib模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而Requests宣传是 “HTTP for Humans”,说明使用更简洁方便。 Requests 是用Python语言编写,基于urllib,但是它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。
中文文档:http://docs.python-requests.org/zh_CN/latest/index.html
2、安装
pip install requests
3、发送get请求
import requests
url = 'http://httpbin.org/get'
data = {'name': 'qa', 'age': 20}
res = requests.get(url=url, params=data)
#print(res.text) #返回unicode格式的数据,常用于文本str
#print(res.content) #返回字节流数据,常用于图片或文件
#print(res.url) #查看完整url地址
#print(res.encoding) # 查看响应头部字符编码
response.text和response.content的区别:
response.content :这个是直接从网络上抓取的数据,没有经过任何的编码,所以是一个bytes类型,其实在硬盘上和网络上传输的字符串都是bytes类型
response.text:这个是str的数据类型,是requests库将response.content进行解码的字符串,解码需要指定一个编码方式,requests会根据自己的猜测来判断编码的方式,所以有时候可能会猜测错误,就会导致解码产生乱码,这时候就应该进行手动解码,比如使用response.content.decode('utf-8')
4、发送post请求
post请求时,对请求参数的处理有2种参数,分别是data和json,下面分别进行讲解。
data:
import requests
url = 'http://httpbin.org/post'
data = {'name': 'qa', 'age': 20}
res = requests.post(url=url, data=data)
用fiddler对python程序发出的请求进行抓包:

可以看出使用data参数发出的请求体是表单格式的,Content-Type为application/x-www-form-urlencoded
ps:Content-Type为如下时,也用data参数

json:
import requests
url = 'http://httpbin.org/post'
data = {'name': 'qa', 'age': 20}
res = requests.post(url=url, json=data)
用fiddler对python程序发出的请求进行抓包:

可以看出使用json参数发出的请求体是json(字典)格式的,Content-Type为application/json
ps:一般来说,后端接口大多需要使用json格式的请求体参数
5、get和post的区别
1、安全性:get请求参数放在接口地址问号的后面,相对来说不是很安全;post请求参数是放在请求体里的,相对比较安全
2、使用场景:get请求一般用于获取数据;post请求一般用于提交数据
3、参数长度:get请求和post请求的参数一般都有长度限制,但是post请求的参数长度一般是大于get请求的
4、幂等性:get请求都是幂等的;post请求一般都是不幂等的(支付、注册、提现等这类接口要做幂等处理)
(幂等的含义:同一个接口,同样的参数请求N次,得到的响应结果都不会变)

浙公网安备 33010602011771号