接口测试必备理论知识
一、 接口的分类
按照协议划分:HTTP、FTP、TCP\UDP\IP、Dubbo等协议接口
按照语言划分:Python、Java、C、C++
按照内外系统划分:内部系统接口和外部系统接口(又叫第三方接口)按照技术应用划分:HTTP协议、Web Service、RESTful、RPC远程过程调用型、Web Socket、FTP、Dubbo协议
二、接口的访问形式
三、Http协议
-
概念:是超文本传输协议,规定了互联网中传输数据的标准
-
特点:
- 支持客户端/服务端模式:客户端与服务器通信、服务端与服务端通信
- 简单快捷:传输的协议不多
- 灵活:能够传输除了文本数据以外的很多数据,如json、html、xml等,能跨平台、跨语言
- 无连接:不会与服务器保持长连接,每次请求都需要建立新的连接
- 无状态:不会保存数据
-
组成部分
请求报文:
-
请求行
请求方法:
- GET:获取和查询数据
- POST:新增数据
- PUT:修改数据
- DELETE:删除数据
其他请求方法还有:OPTIONS、HEAD、PATCH等等
URL由5个部分组成:
- 协议部分:
常见的包括:http、ftp、https等等 - 域名部分:localhost
决定了要访问的服务器网络地址,这个域名会被DNS服务器解析成IP地址,通过IP来定位服务器资源地址。 - 端口部分:http协议默认80端口(默认:没有填写端口时,就采用默认的端口)
端口部分就是服务器内部的应用的端口。(https的默认端口是:443端口,ftp的默认端口是21端口) - 资源路径:/index.php
定位到服务器具体代码的路径 - 查询参数:m=Home&c=User&a=do_login&t=0.005897075..
是具体传递的数据
-
请求头
请求头主要由键值对组成,每行一对
结构: 键名:属性值
常用的请求头有:
-
User-Agent:描述客户端的浏览器信息
-
Content-Type:描述请求体的内容格式
Content-Type的值包括很多种,常见的有:- text/plain 文本格式
- text/xml xml格式
- x-www-form-urlencoded 表单格式;不能上传文件、图片、音视频
- multipart/form-data 二进制表单格式,能用来上传文件、图片、音视频
- application/json
-
-
请求体
用来传输数据。和URL中的查询参数不一样的是,URL的数据直接可以在浏览器地址栏看到,而请求体不能直接看到。并且,请求体能传输的数据类型、数据大小都比URL要多
相应报文:
-
状态行
状态码: 描述服务器处理请求的结果;状态码由3位数字组成,可以分成5类
-
1XX:代表客户端请求已经被接收了,继续处理
-
2XX:代表客户端请求被服务器按照内部逻辑正确处理成功了,但是并不代表业务成功
-
3XX:资源已经失效,重定向到新的地址
-
4XX:客户端错误
-
5XX:服务器错误
-
-
响应头
-
响应正文
HTTPS:
-
概念:HTTPS是HTTP协议+SSL/TLS(Secure Sockets Layer/Transport Layer Security )认证,是一个基于安全套接字的超文本传输协议
-
作用:主要用于对网络传输的数据进行加密,保证数据的安全性、完整性、一致性。
-
HTTP与HTTPS的区别:
-
HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
-
HTTP 是不安全的,而 HTTPS 是安全的
-
HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
-
HTTP 无需加密,而 HTTPS 对传输的数据进行加密
-
HTTP 无需证书,而 HTTPS 需要认证证书
-
HTTP 免费,HTTPS收费
-
加密:
- 概念:
明文:直接能看懂的文本内容
密文:经过加密后的内容
加密:对数据进行处理,使数据被外部人员无法理解,但是自己人能够理解。
加密算法:对数据加密时,所采用的相关计算方法。
密钥:加密数据和解密数据时,使用的一个字符串,这个字符串起到钥匙的作用。
签名:使用一种超运算加密算法,如MD5,SHA256算法对数据进行运算,形成摘要,然后截取一部分摘要得到的字符串就是签名。签名的作用是确保数据没有被篡改。
-
加密方式:
-
对称加密:
加密和解密过程完全对称的加密。
典型的对称加密算法是:DES,3DES加密算法。
特点: 1)加密解密完全对称,加密时使用的密钥和解密时使用的密钥是同一个密钥 2)性能好,速度快
-
非对称加密:
加密和解密过程不对称的加密。
非对称加密算法有:RSA加密算法
非对称加密算法中,把密钥分成了公钥和私钥。其中公钥是指公开的密钥,私钥是指不公开的密钥。
使用非对称加密算法加密数据的过程中:
- 公钥加密的数据,只能用私钥解密。
- 私钥加密的数据,只能用公钥解密。
特点:
1)因为加解密不完全对称,所以恶意攻击者不能获取全部信息,更能保证数据的安全性
2)性能比对称加密差
作用:一般用公钥加密客户端生成要用的对称加密算法中的密钥,保证对称加密的密钥不被公开.
-
-
SSL/TLS认证:
SSL认证是一个非常复杂的过程,主要可以认为分成以下几个步骤完成:
- 客户端发送请求,要与服务器建立HTTPS连接
- 服务器返回SSL证书和加密算法给客户端
- 浏览器根据内置的SSL证书验证权威结构来验证SSL证书是否合法、有效
- 浏览器内部使用对称加密算法生成一个密钥,用于加密传输数据
- 浏览器使用SSL证书中的公钥即为Pa,加密对称加密算法生成的密钥记为Ra,得到一个Pa(Ra)加密过后的字符串,然后把它发送给服务器
- 服务器使用私钥解密Pa(Ra)加密过后的字符串,得到Ra
- 后期,客户端和服务器都使用Ra加密数据,保证数据的安全性。
-
扩展:TCP/UDP协议
概念:
-
TCP是一个传输层协议,英文全称是:Transmission Control Protocol
-
UDP也是一个传输层协议,英文全称是:User Datagram Protocol
区别:
- TCP可以保证传输数据的安全性、可靠性(TCP通过三次握手建立连接,四次挥手断开连接)
- UDP只保证传输效率,不保证安全性、可靠性(UDP是直接发送数据,而不会关注客户端是否收到数据内容)
-
-
-
扩展:TCP三次握手和四次挥手
三次握手:
- 客户端主动与服务器建立连接
- 客户端设置SYN序号为1,并发送一个seq序号,seq序号随机产生
- 服务器将SYN和ACK位置都设置为1,并把客户端的序号+1,表示应答,然后生成自己的随机序号seq
- 客户端恢复一个ACK,ACK的值是服务器发送的SYN+1
注意:SYN=1,ACK=0是一个连接请求报文的意思。SYN=1,ACK=1是响应报文的意思
四次挥手:
- 客户端发送关闭连接请求FIN=1 和 seq
- 服务器返回ACK,ACK的值是客户端的seq的值加1
- 服务器返回FIN 和 seq
- 客户端返回ACK,ACK的值是服务器seq的值+1
-
-
四、会话管理
概念:通过一个字符串表示用户的未登录/已登陆的状态
实现方式:
-
基于Cookie
概念:Cookie是一个容器,主要用于存放数据大小比较小的临时数据。
特点:
-
不能跨域:我们访问服务器时,都会通过域名来访问。例如:www.test.com,这个www.test.com是域名。如果是我们www.test.com域名指向的服务器发送的cookie,那么这个cookie就不能在www.baidu.com中使用。
-
存在有效期Cookie存在有效时间,超过规定的时间后就会失效。可以设置Cookie的配置,来让cookie永久不失效。不设置有效期时,cookie默认是一个session cookie,浏览器不关闭,cookie不失效
-
大小:默认4KB大小
-
有数量限制:不同浏览器限制的cookie数量不一样,为了保证兼容性,做最低兼容,cookie数量不要超过二十个。
-
对字符编码有限制
ps:base64编码:一种编码格式,目的不是加密,是为了保证数据能够在互联网稳定的传输
流程:
-
-
-
基于Session
-
基于token
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端