博主主页: 码农派大星.
数据结构专栏:Java数据结构
数据库专栏:数据库
JavaEE专栏:JavaEE
软件测试专栏:软件测试
关注博主带你了解更多知识
1. 回顾Http协议
请求:
请求行: 请求方式, 请求路径,协议
请求头:
Content-Type: 客户端发送的数据格式
application/x-www-form-urlencoded 表单
application/json json数据
multipart/form-data 文件上传
application/octreent-stream 二进制文件上传
Accept:声明客户端可接收的数据格式
X-Requested-With:标识异步请求
User-Agent:客户端类型信息
Cookie:会话状态信息
响应:
响应行 : 状态码 状态信息
响应头
响应正文: 响应数据
2. requests库
发送请求三种方式
1. requests.请求方式(参数)
包括requests.get()、requests.post()、requests.put()、requests.delete()
提示: 第一种方式底层就是调用了第二种请求方式
例如:
2. requests.request(method, url, **kwargs)
参数说明:
method: 指定HTTP方法(GET/POST/PUT/DELETE等)
**kwargs: 其他可选参数
url: 请求的目标URL
提示: 第二种请求方式,底层就是调用第三种请求方式
3. requests.session().request()
⽅法形式:
先创建会话对象:session = requests.Session()
再发送请求:session.request(method, url, **kwargs)
可以自动处理有cookie关联的接口,前面两种都是单独请求(类似jmeter的http cookie管理器)
请求参数详解
params传参
在接⼝路径后以?传递,多个参数⽤&分隔
对参数内容进⾏urlencode编码(内容以ASCII⽅式呈现)
data传参: form表单
表单参数,请求头为Content-Type: multipart/form-data
主要⽤于POST请求的表单提交
json传参
特点:JSON格式参数,请求头为Content-Type: application/json
unicode编码
三种传参⽅式对⽐
params传参: 查询字符串⽅式,数据直接附加在 URL 后面,适合GET请求,数据通过 URL 的查询字符串传递
data传参: 表单⽅式,需要设置特定Content-Type
数据通过 HTTP 请求体(Body)传递
适合表单提交或文件上传,数据不在 URL 中显示
json传参: 直接传递JSON格式数据
数据同样通过 HTTP 请求体(Body)传递
数据以 JSON 格式组织,适合复杂数据结构
json传参与form表单传参的区别
请求头差异:
- Form表单传参需要设置Content-Type为application/x-www-form-urlencoded
- Json传参需要设置Content-Type为application/json
参数处理:
- Form表单会对参数进⾏urlencode编码(内容以ASCII⽅式呈现)
- Json传参会对中⽂字符进⾏unicode编码处理
files传参
文件上传参数用于在接口请求中传输文件数据
请求头处理:自动添加Content-Type为multipart/form-data
表单构建:会构建表单数据并将文件内容以二进制形式加入请求体
第一种方式:上传已存在的文件
使用open()函数以二进制模式("rb")打开文件
文件路径注意事项:
左斜杠"/"只需一个
右斜杠""需要两个(因为单个反斜杠是转义符)
其他请求参数
- headers:请求头参数
- cookies:Cookie信息
- auth:授权参数
- timeout:超时设置
- allow_redirects:是否允许重定向(默认True)
- proxies:代理设置
- hooks:钩⼦函数
- stream:⽂件下载
- verify:证书验证
- cert:CA证书
response对象的属性和方法
res = requests.post(url="http://82.157.143.27:8081/user/login")
res.text 返回字符串类型的数据
res.content 返回二进制类型的数据
res.json() 把json字符串转化为字典格式返回
res.status_code 状态码
res.reason 状态信息
res.cookies cookie信息
res.encoding 编码格式
res.headers 响应头
res.elapsed 耗时
res.request.method 请求方式
res.request.url 请求路径
res.request.headers 请求头
res.request.body 请求数据
3. 接口请求实例演示:
使用 requests.Session()
来管理 HTTP 请求会话