常常听别人说接口测试,接口测试自动化,可是你对接口,有多少了解和认识,知道什么是接口吗?它是用来作什么的,测试时候要注意什么?坦白的说,笔者以前也不是很清楚。接下来先看一下接口的定义。web
接口泛指实体把本身提供给外界的一种抽象化物(能够为另外一实体),用以由内部操做分离出外部沟通方法,使其能被内部修改而不影响外界其余实体与其交互的方式。面试
人类与电脑等信息机器或人类与程序之间的接口称为用户界面。电脑等信息机器硬件组件间的接口叫硬件接口。电脑等信息机器软件组件间的接口叫软件接口。编程
在计算机中,接口是计算机系统中两个独立的部件进行信息交换的共享边界。这种交换能够发生在计算机软、硬件,外部设备或进行操做的人之间,也能够是它们的结合。api
1、规范性浏览器
接口就是规范,在整个系统设计中,涉及到不少层,为了使各个层之间调用透明话,你只须要知道接口,按照这个接口作你具体作的事情,就能够融合到整个系统中了。安全
生活中的例子不少,例如:插头、插座,有标准的规范告诉你插头应该是几个脚,插座是几个孔等等,作插头、插座的公司就是根据这个规范来作插头、插座,而不须要作完一个插头就跑遍全世界去试用一下这个插头作的对不对。服务器
2、扩展性工具
在项目开发过程当中,因为客户的需求常常变化,若是不采用接口,那么咱们必须不停改写现有的业务代码。改写代码可能产生新的BUG,并且改写代码还会影响到调用该业务的类,可能全都须要修改,影响系统自己的稳定性。到最后,可能会出现代码凌乱,不易读懂,post
后接手的人没法读懂代码,系统的维护工做愈来愈重,最终可能致使项目失败。性能
3、接口在项目就是一个业务逻辑,面向接口编程就是先把客户的业务提取出来,做为接口。业务具体实现经过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,不须要改写现有代码,减小对系统的影响。从而让项目具备更大的扩展性。
接口是指外部系统与系统之间以及内部各子系统之间的交互点。包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口、同级接口。
常见web接口:一类是http协议的接口,另外一类是web service接口(如soup、rmi、rpc协议)。本文主要介绍http请求接口。
常见的http请求方式包括:get(查)、post(增),除此以外还有put(改)、delete(删)等。平常工做中见到的最多的是get和post两种。
GET:GET能够说是最多见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源经过一组HTTP头和呈现据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
POST:向服务器提交数据。这个方法用途普遍,几乎目前全部的提交操做都是靠这个完成。它用来向指定资源提交数据进行处理请求(例如:提交表单和上传文件),数据包被包含在请求体中,post请求可能致使新的资源的创建或者已有的资源的修改。
PUT:这个方法比较少见。HTML表单也不支持这个。本质上来说, PUT和POST极为类似,都是向服务器发送数据,但它们之间有一个重要区别,PUT一般指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器本身决定。客户端向服务器传送的数据取代指定文档的内容。
举个例子:如一个用于提交博文的URL,/addBlog。若是用PUT,则提交的URL会是像这样的”/addBlog/abc123”,其中abc123就是这个博文的地址。而若是用POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT和POST用途是不同的。具体用哪一个还取决于当前的业务场景。
DELETE:删除某一个资源。基本上这个也不多见,不过仍是有一些地方好比amazon的S3云服务里面就用的这个方法来删除资源。
1)get型接口
格式:请求数参数写在网址后面,用"?"链接,多个参数之间用"&"链接。如:https://api.douban.com/v2/book/search?q='',这是一个豆瓣查询图书信息的开发api,q='',单引号里就是查询的参数,如查询《小王子》这本书的信息,则q='小王子',使用postman工具来试验一下,以下图:
场景:get型接口用于获取信息,多用于查询数据,如列表查询功能,点击查询按钮就调用一个get接口,而后把信息返回出来
特色:1)请求数据量小,2)参数暴露于url地址中,故存在安全隐患
2)post型接口
说明:向指定资源位置提交数据(如提交表单、上传文件)来进行请求,post请求可能会致使新资源的创建
场景:如注册、上传、发帖等功能,如用户在豆瓣网站对某本书进行收藏、写笔记、发表评论
特色:请求数据量大,安全性高
如豆瓣的发表评论的开放api,见下图:
3)put型接口
说明:put请求用于向指定资源位置上传最新内容
场景:如用户在豆瓣网站修改对某本书的收藏、修改某篇笔记或修改评论
如豆瓣的修改评论的开放api,见下图:
4)delete型接口
说明:请求服务器删除请求里url所标识的资源
场景:如用户在豆瓣网站取消对某本书的收藏、删除某篇笔记或删除评论
如豆瓣的删除评论的开放api,见下图:
不常见的http请求方式包括:head、connect、options和trace。
head:HEAD和GET本质是同样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。换句话说,就是返回响应中没有具体内容,只获取报头。有的人可能以为这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,咱们一般使用GET,但这里用HEAD则意义更加明确。
connect:HTTP/1.1协议中预留给可以将链接改成管道方式的代理服务器。
options:这个方法颇有趣,但极少使用。它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。容许客户端查看服务器的性能。
trace:回显服务器收到的请求,主要用于测试和诊断。
这个问题,面试中常常被提到。简单来讲,能够从三个方面去回到这个区别:方式、大小、安全
1).方式
方式指的是参数的传入方式,GET方法通常是指获取服务器上的数据,参数直接跟着URL后边,直接能够放到浏览器地址栏里,例如登陆就是采用GET方法。而POST方法是指客户端给服务器上提交表单数据,因此POST是经过表单提交的,例如你网页上的新用户的注册、调查问卷和答题就是采用POST方法。
2).大小
上面已经知道GET是直接在浏览器地址栏输入,因为浏览器有限制,通常整个URL的长度能够很长,可是不能超过2049KB的大小限制,而这个POST就没有大小限制。
3).安全性
因为GET的参数是在浏览器地址栏直接拼接,暴露在互联网中,确定不安全。POST是经过表单数据提交,相对比GET方法更安全。