一.七层协议
应用层:HTTP,FTP(文件传输),SMTP(邮件传输),MQTT(硬件数据传输)
表现层
会话层:SSL(安全传输协议 HTTPS),RPC(远程过程传输,微服务和微服务之间通信采用RPC协议) 传输层
网络层:TCP/IP协议
数据链路层
物理层: CAN,LIN
二.TCP/IP协议族
TCP:传输控制协议
TCP报头(请求头)
端口号:区分在同一个计算机上不同的应用 范围:0-65535
常用的端口号:
MySQL:3306
tomcat:8080
HTTP:80
HTTPS:443
Redis:6379
抓包工具:8888
MongoDB:27017
序列号:
在第一次请求的时候随机生成
在第二次请求的时候在之前序列号的基础之上 +1
标志位:
ACK:ACK=1的时候表示接收到消息
SYN:SYN=1的时候表示想要建立连接
FIN:FIN=1的时候表示想要和对方断开连接
三次握手:
第一次握手:
由客户端发送消息给服务端:SYN=1 seq=x
第二次握手:
由服务端发送消息给客户端:ACK=1 SYN=1 ack=x+1 seq=y
第三次握手:
由客户端发送消息给服务端:ACK=1 seq=x+1 ack=y+1
四次挥手
第一次挥手:
客户端向服务端发送消息:FIN=1 seq=x
第二次挥手:
服务端向客户端发送消息:ACK=1 ack=x+1 seq=y
第三次挥手:
服务端向客户端发送消息:FIN=1 ack=x+1 seq=j
第四次挥手:
客户端向服务端发送消息:ACK=1 seq=x+1 ack=j+1
HTTP协议(超文本传输协议)
链接地址
http://localhost:8080/ecshop/goods.php?id=70&rsv_spt=1
协议部分:http://
域名/IP部分:localhost,127.0.0.1,www.baidu.com,14.119.104.254
端口部分:8080
根路径:/
目录部分:ecshop
文件部分:goods.php
参数部分:id=70&rsv_spt=1
参数部分和前面的部分使用 ? 分隔
参数与参数之间使用 & 符号进行连接
三.
3.1请求(request)
* Connected to www.baidu.com (14.119.104.189) port 80 (#0) # 表示和百度建立连接
# 请求头
> GET / HTTP/1.1 # 请求方式 请求协议 协议版本
> Host: www.baidu.com # 请求的主机
> User-Agent: curl/8.0.1 # 请求客户端
> Accept: */* # 接收的返回值类型
> # 空行 分割请求头和请求内容
> # 请求内容
3.2响应(response)
# 响应头
< HTTP/1.1 200 OK # 协议 版本 状态码:200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
< Content-Length: 2381
< Content-Type: text/html # 响应的数据类型
< Date: Sat, 10 Jun 2023 03:13:19 GMT
< Etag: "588604dd-94d"
< Last-Modified: Mon, 23 Jan 2017 13:27:57 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18 # 反向代理 常见的 nginx
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
< # 空行 分割响应头和响应内容
# 响应内容
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compati
3.3状态码(status_code)
1xx:标示接收到了请求,继续处理
2xx:成功
200:成功接收消息并返回
3xx:重定向
302:URL发生暂时性的转移
4xx:客户端错误
404:表示客户端请求的资源不存在
400:表示客户端请求出现语法错误
5xx:服务端错误
502:出现了非法响应
500:服务端发生不可预知的错误
503:当前服务器不能正常处理请求,一段时间后恢复正常
3.4请求方式(method)
Get:请求指定页面信息
Post:向指定的资源提交处理的数据
Put:向服务器传闻文档内容
Delete:请求服务器删除指定页面
Options:允许查看服务器性能
Head:类似get请求,只是没有返回内容,只有返回头部信息
3.5HTTP工作原理
从你在浏览器地址栏输入 www.baidu.com 然后回车一直到百度首页展示出来,中间发生了哪些事情?
# 在正式进行HTTP请求之前必须进行TCP三次握手
1.判断输入的域名地址是否正确
2.拿到域名地址到DNS服务解析出具体的服务器ip地址
3.进行TCP三次握手
4.请求百度的对应ip地址的服务器
5.服务端对请求进行响应处理
6.服务端返回响应的数据给到客户端
7.客户端拿到服务端返回的数据资源进行页面的渲染
8.客户端加载JS和CSS资源,渲染页面
9.断开连接 TCP四次挥手
四.django项目部署
1.安装第三方包
pip install django
pip install pycryptodome
2.更改数据库配置
在guest里面打开setting.py,找到数据库配置 MySQL config
注释 sqlite3 的Databases
打开并修改数据库连接为自己的 MySQL
3.执行数据库迁移
先把本地的数据库切换到5.7+版本
在数据库新建 conference 数据库 编码方式选择utf8mb4
在项目根路径下执行 python manage.py migrate 进行数据库迁移
4.创建超级用户
python manage.py createsuperuser
输入账号和密码
admin 123456Aa
5.运行项目
python manage.py runserver
打开:http://127.0.0.1:8000/ 输入账号密码进行登录
五.接口测试
1.什么是接口?
有特定输入和特定输出的逻辑处理单元(类似函数有参数和返回值)
2.接口分类
内部接口:你们自己开发的接口,也就是说我们需要去测试的接口
外部接口:微信,支付宝接口,天气,股票实时数据(深交所,上交所提供接口)
3.接口的本质是"契约",以"接口文档"的形式来呈现
接口文档:
word
excel
swagger
4.接口测试需要测试哪些东西?
正常的流程:比如添加发布会接口所有的参数都符合规则并完全正确添加发布会成功
异常的流程:必须输入的格式不正确,存在参数没填等异常的行为,需要返回正确的提示
反向的流程:支付成功时正向的流程,支付之后退款就是反向的流程
5.为什么要学习接口测试?
接口测试更接近服务端的代码,更能够发现影响广泛的bug
6.接口测试的工作场景
单接口测试:对单个接口的正确性和健壮性进行测试,需要设计足够的测试用例来对接口进行测试
多接口测试:验证的是多个接口之间的业务流程能不能跑通,关心的是业务流和数据流的关系
实际场景:
单接口测试可以更加接近单元测试
多接口测试可以更加接近业务流程测试