前端框架: VUE, node.js, React
==> 主要负责页面的展示
后端: 主要负责 业务,逻辑处理
接口:前端和后端的交互
有些,前端做了限制,但是后端并没有,漏洞就是可以绕过前端做一些请求。
常用接口方式:
webservice:走soap协议,通过http传输,请求报文和响应报文都是xml格式的。
http:
https:
接口自动化:
项目业务 接口文档 接口用例
自动化脚本 pytest框架 调试&执行
allure报告 结果分析 持续集成
http协议概述:
请求报文:
请求行: 请求方法+url 协议/版本
请求头 由键值对组成,包含 user-agent, content-type, cookie等
空行
请求正文: 请求参数
状态码:
200: 请求通了, 但其实不一定成功
30x:请求重定向
40x:连接/路径/资源不存在, url有问题 => 查URL
50x:服务器有问题
Cookie&SessionID&Token
token机制是避免频繁访问数据库, 有时效性。
cookie和token是不同的机制。
cookie有时同时存放的有sessionid 和 token。
数据格式:
表单格式: 键值对的形式,用&连接多个键值对
JSON格式:键值对形式的字符串;键必须用双引号
data: 请求体参数,默认是表单类型
==》 如果是data的话,header可以不用传
json:请求体参数,默认是JSON类型
**kwargs: 格式:变量=值。 一般传 headers, cookies, proxy, ssl检验
token, cookie 一般封装在header
# 打印请求头
# 可以查看到user-agent直接发送的话python。。。: ‘User-Agent‘: ‘python-requests/2.25.1‘
print(reps.request.headers)
# 打印请求体
print(reps.request.body)
# 查看响应头, 可以查看到响应体的格式
print(reps.headers)
# 查看响应体, text文本形式
print(reps.text,type(reps.text))
# 查看响应体, 字典格式。前提,响应体必须是json格式才能用此方法
print(reps.json(),type(reps.json()))
# 取响应中的某个信息,比如 retcode
print(json.loads(reps.text)["retcode"])
print(reps.json()["retcode"])
unicode转中文:
\u7528\u6237\u6216\u8005\u5bc6\u7801\u9519\u8bef ==》这种是Unicode码, 可以用工具转为中文。
在代码中,也可以通过指定编码的方式,转为中文==》 reps.encoding="unicode_escape"
代码中怎么表示是json格式:
# 请求体;根据要求 请求体是JSON格式,但是代码中具体怎么表示为JSON呢,加引号
payload = {
"action": "add_course",
"data":‘‘‘{
"name":"初中语文",
"desc":"初中语文课程",
"display_idx":"1"
}‘‘‘
}