1.接口
1.接口概念
系统之间数据交互的通道
2.接口类型
在软件测试中,常说的接口一般有两种:图形用户接口(Graphical User Interface,GUI),它是人与程序的接口;应用程序编程接口(Application Programma Interface, API),称为接口API。
前后端分离是近年来Web应用开发的一个发展趋势。这种模式具有以下优势。
(1)后端工程师不用精通前端技术(如HTML、JavaScript或CSS),只专注于数据处理,对外提供API即可。
(2)前端工程师的专业越来越强,其通过API获取数据,并专注于页面设计。
(3)前后端分离可扩大接口的应用范围,开发的接口可以应用到Web页面上,也可以应用到APP上。
3.API接口
API是一组定义、程序及协议的集合,API可实现计算软件之间的相互通信。API的一个主要功能是提供通用功能集。程序员通过使用API函数开发应用程序,从而可以避免编写无用程序,减轻编程任务。很多公司将开发岗位分为前端工程师和后端工程师,他们之间相互配合完成工作。一般来说,他们会协商接口的定义方式,其中一方定义接口(一般由后端工程师定义接口),另一方来调用接口,已实现预期功能。
2.接口的分类
依据所遵循协议的不同,常见接口可以分为以下3类。
1.HTTP接口
它是基于超文本传输协议(HyperText Transfer Protocol,HTTP)开发的接口,但不能排除没有使用其他协议。
2.Web Server接口
它是系统对外的接口,比如你要从别的网站或服务上获取资源,一般来说,别人不会把数据库共享给你,他们会提供一个他们写好的方法,让你用来获取数据,你使用他们写好的方法就能引用他们提供的接口,从而达到同步数据的目的。
3.RESTful接口
简称为REST,其描述了一个架构样式的网络系统,核心是面向资源。REST专门针对网络应用设计和开发方式,降低开发的复杂性,提高系统的可伸缩性。
基于浏览器/服务器模式(Brower/Server,B/S)的软件系统接口大多数为HTTP接口,因此研究HTTP接口的测试方法。要测试HTTP接口,首先需要了解HTTP、HTTP请求和响应的相关知识。
3.HTTP
1.HTTP概念
超文本传输协议,基于请求与响应的应用层协议
2.组成
URL
概念:统一资源定位符,网络资源地址
组成:协议 :// hostname[:port] / path / [? 查询参数1 & 查询参数2]
HTTP请求(Request)
概念:定义请求数据格式
组成:
-
-
-
- 方法(Method):HTTP定义了与服务器交互的不同方法(Method),基本方法有4中,分别是GET、POST、PUT、DELETE。可以这样理解:URL地址用于描述一个网络上的资源,而HTTP中的GET、POST、PUT和DELETE方法对应着这个资源的“查”、“改”、“增”、“删”操作,即GET一般用于获取、查询资源信息。而POST一般用于更新资源信息等。
- 请求头(Headers):常用
- user-agent:用户代理,一般包括手机,浏览器,postman,jmeter
- content-type:请求数据格式
- text/html: HTML格式
- text/plain:纯文本格式
- image/jpeg:jpg图片格式
- application/json: JSON数据格式
- application/x-www-form-urlencoded: 表单默认的提交数据格式
- multipart/form-data: 在表单中进行文件上传时使用
- cookie:缓存在浏览器中
- 可自定义
- 请求体(Body):传输数据实体,请求体常在POST、PUT方法中使用,常配合的请求头:Content-Type和Content-Length
-
-
HTTP响应(Response)
概念:
将HTTP请求发送到服务器后,服务器会给出相应的应答,服务器返回的应答消息称为HTTP响应
组成:
-
-
-
-
状态:描述服务器处理结果
- 1xx:指示信息
- 2xx:成功
- 200 OK:客户端请求成功。
- 3xx:重定向
- 301 被请求的资源已永久移动到新位置
- 302 被请求的资源临时性移动到新位置
- 4xx:客户端错误
- 400 Bad Request:客户端请求有语法错误,不能被服务器理解
- 401 Unauthorized:请求未经授权
- 403 Forbidden:服务器收到请求,但拒绝提供服务。
- 404 Not Found:请求的资源不存在
- 5xx:服务器端错误
- 500 Internal Server Error:服务器发生不可预期的错误。
- 503 Server Unavailable:服务器当前不能处理客户端的请求
-
响应头(Headers):描述客户端要使用的一些附加信息
- content-type:返回数据的格式
- set-cookie
- 可自定义
-
响应体(Body):服务器返回的数据实体
-
-
-
3.GET方式和POST方式区别
- 提交数据方式不同
- GET:请求的数据会附在URL之后,以“?”(英文问号)分隔URL和传输数据,多个参数用“&”连接,如 百度安全验证,如果数据是英文字母、数字,则直接发送;如果是空格,则转换为“+”后发送;如果是中文、其他字符,则会用Base64加密字符串后发送。
- POST:把提交的数据放置在HTTP包的请求体“request-body”中。因此,使用GET方式提交的数据会在地址栏中显示出来,而使用POST方式提交的数据不会在地址栏中显示。
- 传输数据的大小不同
虽然HTTP没有对传输的数据大小进行限制,HTTP规范也没有对URL的长度进行限制,但实际开发中还是会存在一些限制。
-
- GET:特定浏览器和服务器对URL的长度有限制,因此,使用GET方式提交时,传输数据就会受到URL长度的限制。
- POST:此方式由于不是通过URL传值,理论上数据不受限制。但实际上,各个Web服务器会规定对使用POST方式提交的数据大小进行限制。
- 安全性不同
- POST方式比GET方式的安全性更高。例如,通过GET方式提交数据,用户名和密码将以明文的形式出现在URL上,由于登录页面有可能被浏览器缓存,因此他人通过查看浏览器的历史记录,就可以知道你的账号和密码
4.JSON
-
JS对象标记定义
JS对象标记(JavaScript Object Notation,JSON)是一种轻量级的数据交换格式。它基于ECMAScript(W3C制定的JavaScript规范)的子集,采取完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言,其易于阅读和编写,同时也易于机械解析和生成,并能有效的提升网络传输效率。因此,HTTP接口响应一般为JSON格式。 -
JSON语法的规则
JSON语法规则包括用大括号保存对象、用键值对表示对象、用逗号分隔每个对象、用中括号保存数据。 -
JSON示例
{“name”:“postman”,“age”:“20”,“sex”:“male”}
json解析网站例如:JSON在线 | JSON解析格式化—SO JSON在线工具