接口测试常用知识点

背景

我们在做接口测试时,经常与http协议, URL打交道,通常情况下会修改URL中参数、来达到不同的测试目的或者转到不同的页面,那么,你对HTTP协议了解多少呢?今天来总结下。

一. HTTP协议简介

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)的协议。
HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

二、HTTP协议主要特点

① 简单快速
客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
②灵活
HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
③ 无连接
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。随着时间的推移,网页变得越来越复杂,里面可能嵌入了很多图片,这时候每次访问图片都需要建立一次 TCP 连接就显得很低效。Keep-Alive 功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive 功能避免了建立或者重新建立连接
④ 无状态
HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
⑤ 支持B/S及C/S模式

三、详解URL

URL的组成部分及其含义:
以下面关键字搜索URL为例:http://10.82.232.190:8088/search/poi?datasource=poi&query=医院&page_num=1&ak=ebf48ecaa1fd436fa3d40c4600aa051f&sort=0&region=320200&page_size=10
一个完整的URL包括以下几部分:
1.协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在"HTTP"后面的“//”为分隔符。
2.域名部分:一个URL中,也可以使用IP地址作为域名使用,比如这里为10.82.232.190
3.端口部分:这里端口号为:8088,端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口
4.虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/search/”
5.文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“poi”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名
6.锚部分:从“#”开始到最后,都是锚部分。锚部分也不是一个URL必须的部分
7.参数部分:从“?”开始到结尾为止之间的部分为参数部分,又称搜索部分、查询部分。参数包括参数名、参数值,本例中的参数部分为“query=医院&page_num=1”。其中““query””为参数名,““医院””为参数值。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

四、HTTP请求方法

http请求由三部分组成,分别是:请求行、消息报头、请求正文。请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。
格式:Method Request-URI HTTP-Version CRLF

  Method表示请求方法;

  Request-URI是一个统一资源标识符;

  HTTP-Version表示请求的HTTP协议版本;

  CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF符)。

举例:

GET方法:在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获取资源,eg:GET /form.html HTTP/1.1 (CRLF)。
HTTP请求方法(所有方法全为大写)有多种,各个方法的解释如下:

GET : 请求获取Request-URI所标识的资源

POST :在Request-URI所标识的资源后附加新的数据

HEAD :请求获取由Request-URI所标识的资源的响应消息报头

PUT: 请求服务器存储一个资源,并用Request-URI作为其标识

DELETE:请求服务器删除Request-URI所标识的资源

TRACE :请求服务器回送收到的请求信息,主要用于测试或诊断

CONNECT: 保留将来使用

OPTIONS :请求查询服务器的性能,或者查询与资源相关的选项和需求

五、详解GET, POST, PUT, DELETE

在HTTP协议中我们常用的请求方法是GET, POST, PUT, DELETE,当然最常用的为get和post请求,在工作中只遇到过这两种请求方式。
那这四种方法除语义外有什么其他区别呢?
首先介绍两个概念:安全性和幂等性。如果针对一个URL的方法不改变URL所指资源的状态,就称其为安全的,显然在这四种方法里,只有GET方法是安全的。
幂等性,来源于数学上的术语,即对同一操作数的多次操作与一次操作效果是一样的操作符即称幂等操作符,比如取绝对值操作符。

另外在具体技术实现上,这四种方法也有一些区别,那么POST与GET有什么区别呢?
①使用目标不同:
POST与GET都用于获取信息,但是GET方式仅仅是查询,并不对服务器上的内容产生任何作用结果;每次GET的内容都是相同的。POST则常用于发送一定的内容进行某些修改操作。
② 大小不同:
由于不同的浏览器对URL的长度大小有一定的字符限制,因此由于GET方式放在URL的首部中,自然也跟着首先,但是具体的大小要依浏览器而定。POST方式则是把内容放在报文内容中,因此只要报文的内容没有限制,它的大小就没有限制。
③ 安全性不同:
GET是直接添加到URL后面的,直接就可以在URL中看到内容。而POST是放在报文内部的,用户无法直接看到。所以安全性来看,一般情况是POST比GET请求方式安全。

六、HTTP如何保存状态

HTTP是无状态的,如何保存状态?
由于http是一种无状态的协议,因此无论是客户端还是服务器都不记录http的相关信息。这样设计一方面减轻了服务器端的负载,另一方面减小了http请求的开销。但是针对某些特殊的场景,需要时刻记录用户的相关信息,这该如何处理呢?
cookie :
客户端第一次访问,服务器在http响应头中添加Set-Cookie信息,其值的格式通常是name = value的格式。浏览器收到响应后会根据头中的字段保存cookie,下一次访问时在请求头中附带cookie内容,供服务器根据cookie值进行后续处理。
cookie的内容主要包括:名字,值,过期时间,路径和域。cookie机制采用的是在客户端保持状态的方案。
与 cookie 相对的一个解决方案是 session:session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识- 称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。 保存这个session id的方式可以采用cookie(一般这个cookie的名字都是类似于SEEESIONID),这样浏览器下次发请求的时候,这个session id会被放置在请求头中,和cookie一起发送回来。服务器再通过内存中保存的session id跟cookie中保存的ssession id进行比较,并根据id在内存中找到之前创建的session对象,提供给请求使用,也就是服务器会通过session保存一个状态记录,浏览器会通过cookie保存状态记录,服务器通过两者的对比实现跟踪状态,这样的做,也极大的避免了cookie被篡改而带来的安全性问题。
URL重写
由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径

七、HTTP状态码

   100-199 :指定客户端应相应的某些动作。
   200-299 :表示请求成功。
   300-399 :重定向。
   400-499 :客户端的错误。
   500-599 :服务器错误。

猜你喜欢

转载自blog.csdn.net/weixin_43044440/article/details/106339512