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次,得到的响应结果都不会变)

 

posted @ 2022-05-22 16:24  少年不太冷2  阅读(258)  评论(0)    收藏  举报