1.什么是接口
接口分为硬件接口和软件接口。接口测试中的接口一般意义是指软件接口。软件接口又被称为API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而用无需访问源码,或理解内部工作机制的细节。也有人说接口是数据传输的通道或者说是一个功能具体的实现。
用来描述API的功能和具体设置的书名被称为API文档,也叫做接口文档。接口文档通常包含以下部分:
1)接口URL格式
2)接口请求数据
3)接口返回数据
4)接口异常数据
2.接口URL格式
URL的格式是由三部分组成
第一部分是协议
第二部分是存有该资源的主机IP地址
第三部分是主机资源的具体地址,如目录和文件名等
第一部分和第二部分之间用“😕/”符号隔开,第二部分和第三部分用“/”隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。
协议:协议分为很多种,以下是常见的URL协议
http(s)😕/超文本传输协议
ftp://传输文件协议
file://获取本地文件协议
mailto://发邮件协议
tel://打电话协议
sms://发短信协议
2.1HTTP(S)概述
HTTP协议(超文本传输协议):HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务端请求和应答的标准(TCP),被用于在Web浏览器和网站服务器之间传递信息,它可以使浏览器更加高效,使得网络传输减少,但是HTTP协议以明文方式发送内容,且不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号,密码等支持信息。
为了解决HTTP协议的这一个缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
HTTP(S)请求:客户端与服务器建立连接后,向服务器端发送的请求
HTTP(S)响应:服务器端接收到请求后,向客户端做出的响应
HTTP(S)协议特点
1)支持C/S模式(浏览器就是一种客户端)
2)简单快速:客户端向服务器端发送请求时,只需要传递请求路径和请求方式
3)灵活:可以传递任意类型的数据:数据类型由Content-Type指定
4)无状态:HTTP是无状态协议,即对事务的处理没有记忆能力(如果后续处理需要前面处理过的数据,则必须重新传输)
2.2HTTP协议版本
HTTP 0.9版本:1991年,原型版本,功能简陋,只有一个命令GET,且不支持请求头,服务器只能回应HTML格式字符串,由于不支持POST方法,因此客户端无法向服务器传递太多信息,且该版本已过时。
HTTP1.0版本:1996年,支持get及post方式,但每次只能处理一个HTTP请求。
代码如下
`<html>
<body>
<img src="/logo.png"><br/>
<img src="/desc.png"><br/>
</body>
</html>`
以上HTML中有两个元素,并且每个中都有一个URL地址,客户端需要发送两次请求来获取这些图片信息。采用HTTP1.0时,每次发送请求时,都会与服务器重新建立连接。
HTTP1.1版本:1997年,默认采用持久连接,可以有效减少客户端与服务器端的连接次数。若采用HTTP1.1,则两次请求只需要与服务器建立一次连接,并且支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。
HTTP2.0版本:2015年,
2.4HTTP和HTTPS有什么区别?
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL协议用于对HTTP协议传输的数据进行加密,从而诞生了HTTPS。简单来说,HTTPS协议就是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。
HTTP和HTTPS的区别主要如下:
1.HTTPS协议需要到CA申请证书,一般免费证书较少,因而需要一定费用
2.HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议
3.HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
4.HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全
2.5HTTP(S)请求方法(请求方式)
1.Get向特定资源发出请求(请求指定页面信息,并返回实体主体)
2.Post向指定资源提交数据进行处理请求(提交表单,上传文件),有可能导致新的资源的建立或者原有资源的修改
3.Put向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
4.Head(与get请求类似,返回的响应中没有具体内容,用于获取报头)
5.Delete请求服务器删除request-URL所标识的资源(请求服务器删除的页面)
6.Trace回显服务器收到的请求,用户测试和诊断
7.Options方法是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能
除了这些之后还有很多,比如Patch,link等
3.接口请求数据
接口请求参数(httpRequest),一个http请求指的是从客户端到服务端的请求消息,它包括以下信息:
1)请求行
2)请求头
3)请求正文
3.1请求行
请求行位于请求消息的第一行,包含请求方式、资源地址以及当前HTTP版本号三部分消息。
例如:GET /index.html HTTP/1.1
具体的请求行消息可以在上文参考
3.2请求头
请求头(Request Header),请求头主要用于向服务器端传递附加信息,如客户端可以接收的数据类型、语言、压缩方法等。
例如:
Host:请求的服务器地址
User-Agent:客户端相关信息,例如如果是浏览器,则涉及浏览器版本,内核等信息
Accept:浏览器支持的MIME类型
Accept-language:浏览器支持的语言
Accept-Encoding:浏览器支持的压缩编码
Referer:发出请求的网址
…
3.3请求正文(参数)
发送请求时,携带的参数,例如:username,password等等
4.接口响应数据
HTTP响应消息表示的是服务器向客户端返回的数据,由响应状态行 、响应头、响应报文等简单内容。
4.1响应状态行
响应状态行主要包括HTTP版本号,响应状态码、状态消息等。
响应状态码主要包括:
200-成功
404-资源找不到
500-服务器异常
302-重定向等
4.2响应头
用户说明客户端需要使用的一些附加消息,如资源的最后修改时间、重定向地址等。如:
Content-Language:响应体的语言
Content-Length:响应体的长度
Content-Type:返回内容的MIME类型
Date:原始服务器消息发出的时间
Server:Web服务器软件名称
…
4.3响应报文
针对请求从服务响应回来的数据,比如html,xml,json等。
总结:值得注意的是,在实际的测试工作中,请求头和响应头里面所列举的内容并不全面,所以需要感兴趣的同学自己私下去学习。
