接口测试之概述2
发送request的组成部分
1、请求地址
2、HTTP协议中常用的8种请求方法
由于PUT和DELETE请求方法不安全,所以很多时候,往往会使用POST来进行替代。
(1)HTTP协议中最常用的4种请求方法
GET:客户端从服务端获取资源(编程语言:get:获取信息、set:设置信息);
POST:客户端往服务端发送请求添加新的资源(如淘宝新商家上传商品);
PUT:客户端针对服务端已有的数据进行更新;
DELETE:客户端删除服务端已有的数据。
3、HTTP协议(http是一个无状态的协议,但是互联网产品的发展,需要记住用户的操作行为习惯)中的请求头
(1)其中较为常用的请求头有:
Content-Type:指的是数据格式;
Cookie:反爬虫,身份凭证;
Referer:发送请求的地址是从哪里来的;
User-Agent:发送网络请求的时候向服务端标注请求是通过什么浏览器或者什么软件(PostMan,JMeter)发送的。
User-Agent使用场景:如开发了一个APP,想看那个系统使用的用户比较多,统计user-agent的数据,进行分析就可以知道。
4、请求参数
(1)get: 路径参数 http://xxx.com/?name=wuya&age=18 ?key1=value1&key2=value2(get的请求参数与数据格式没任何关系);
(2)post: payload(谷歌浏览器)中显示了请求的参数(请求头中的数据格式决定了请求参数的格式)。
response响应组成部分
5、协议状态码
(1)200 请求成功?
(2)301 永久重定向?
(3)302 临时重定项?
(4)400 Bad Request 客户端请求错误(测试失误)
错误原因:请求参数不对或者请求头不对。
(5)401 Unauthorized 无权限访问该系统
(6)403 Forbidden 有权限但是禁止访问
(7)404 请求的资源不存在(请求的地址不存在,所以导致请求的资源也是不存在)?
(8)405 不被允许的请求方法(你请求的方法,没有定义对应的请求方法,但是你去进行访问? )
(9)500 服务器内部错误(程序员的错误)
错误类型包括:空指针( Null PointExpection)、堆栈溢出(在测试选择项的时候,选择很多很多的项,同时触发,看是否会暴露该问题)、OOM(内存泄露) Out Of Memory 、其他异常:Expection。
(10)? 504 GateWay Timeout 网关超时
即客户端发送了请求,但是网关(API Getaway)处理超时。
6、响应数据:响应数据返回的数据格式是由响应头里面的content-type来决定的。
7、响应头(response headers)
(1)content-type:指明返回的响应数据的数据格式是什么;
(2)set-cookie:服务端返回给客户端的登录凭证。
8、常用的数据格式
(1)表单格式:application/x-www-form-urlencoded; charset=UTF-8;
(2)json格式:application/json;charset=UTF-8 json数据格式:基于JSON的数据格式,
但是数据类型是字符串;
(3)text/html格式 :返回的是基于html的数据格式;
(4)text/xml:返回的是基于xml的数据格式。
9、cookie、session、tokeon请求
(1)cookie:主要是存储用户操作行为的数据,在早期的互联网产品中,用户登录系统的凭证都是由cookie来进行记录的,但是由于是存储在客户端的(本机的电脑),所以是不
安全的,基本目前登录认证的凭证不会再使用cookie的技术了。
(2)session:由于cookie是存储在客户端的,它不安全,所以session是把登录成功后的数据存储在服务端。
session流程:
一、客户端输入账户和密码,点击登录;
二、登录成功后,会在服务端把用户登录成功后的信息生成一个sessionid的凭证,并且存
储在服务端;
三、然后服务端通过响应头中的set-cookie把生成的sessionid返回给客户端;
四、客户端再次查看个人主页,客户端会通过请求头中的cookie,把set-cookie返回的
sessionid带上,发送给服务端;
五、服务端接收到客户端发送的sessionid,和存储在服务端的session ID作一个对比;
六、如果对比一致,用户可以继续反问系统的任何功能,如果对不一致,立刻跳转到登录的页面。
(3)token:本质上是session的原理,我们可以把它理解为一个令牌,每次登录成功后,
返回的token都是随机的字符串 jwt的技术来实现。
token流程:
一、客户端输入账户和密码,点击登录;
二、登录成功后,会在服务端把用户登录成功后的信息生成一个Token的凭证,同时了存储
在服务端;
三、服务端会通过响应数据或者是响应头中的set-cookie返回给客户端;
四、那么客户端再次向服务端发送请求,会在请求参数或者请求头中的Authuration中带上
返回来的token发送给服务端;
五、服务端接收到客户端发送的Token,和存储在服务端的Token作一个对比;
六、如果对比一致,用户可以继续反问系统的任何功能,如果对不一致,立刻跳转到登录的页面。
10、HTTPS协议
(1)HTTP协议的缺陷,这些缺陷主要为:
一、通信内容是明文,内容很可能被第三方获取到;
二、不验证通信方的身份信息,容易被伪装;
三、无法证明请求头的完整性;
(2)HTTPS协议
由于HTTP存在上述缺陷,也就有了HTTPS的协议,我们可以把HTTPS可以汇总为:HTTPS=HTTP+加密+认证+完 整性保护。基于这样一层的设计,相对来说TPS还是比较安全的,HTTPS不是全
新的协议,它只是HTTP的协议基础上新增SSL和 TLS。在前面中我们知道HTTP是和TCP直接通信,那么在HTTPS中,HTTP先和SSL通信,SSL再和TCP来进行通信。HTTPS也并不是最最安全
的,最典型的就是2016年发生的心脏流血事件。
(3)HTTP认证体系
HTTP认证体系 HTTP/1.1版本中,使用的认证方式具体为:BASIC认证,也就是基本认证 DIGEST认证,也就是摘要认证 SSL客户端认证 FormBase认证,也就是基于表单的认证。
一、BASIC(基本认证)
基本认证采用Base-64编码方式,但是不是加密的处理方式。不需要附加任何信息可对其进行解码,那么在HTTP等非加密通信的线路上进行BSCIC认证的过程中,很容易被人进行获取信息,安
全体系不够高。
二、DIGEST(摘要认证)
DIGEST的认证体系是为了解决BASIC的缺陷之一的,它也是采用质询/响应的模式,但是不会直接发送明文密码。 所谓质询/响应模式指的是一开始一方先发送认证要求给另外一方,接着使用从
另一方那接收到的质询码计算生成响应码,最后将响应码返回给对方进行认证的方式。
三、ssL客户端认证
事先需要把客户端证书分发给客户端,且客户端必须安装此证书。
四、FormBase认证
就是基于表单认证。