🔥 python 接口自动化(一)-- 什么是接口、接口优势、类型(详解)

1.简介

  经常听别人说接口测试,接口测试自动化,但是你对接口,有多少了解和认识,知道什么是接口吗?它是用来做什么的,测试时候要注意什么?坦白的说,笔者之前也不是很清楚。接下来先看一下接口的定义。

2.定义

  接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。

  人类与电脑等信息机器或人类与程序之间的接口称为用户界面。电脑等信息机器硬件组件间的接口叫硬件接口。电脑等信息机器软件组件间的接口叫软件接口。

  在计算机中,接口是计算机系统中两个独立的部件进行信息交换的共享边界。这种交换可以发生在计算机软、硬件,外部设备或进行操作的人之间,也可以是它们的结合。

3.接口的优势

  一、规范性

  接口就是规范,在整个系统设计中,涉及到很多层,为了使各个层之间调用透明话,你只需要知道接口,按照这个接口做你具体做的事情,就可以融合到整个系统中了。

  生活中的例子很多,例如:插头、插座,有标准的规范告诉你插头应该是几个脚,插座是几个孔等等,做插头、插座的公司就是根据这个规范来做插头、插座,而不需要做完一个插头就跑遍全世界去试用一下这个插头做的对不对。

  二、扩展性

  在项目开发过程中,由于客户的需求经常变化,如果不采用接口,那么我们必须不停改写现有的业务代码。改写代码可能产生新的 BUG,而且改写代码还会影响到调用该业务的类,可能全都需要修改,影响系统本身的稳定性。到最后,可能会出现代码凌乱,不易读懂,

  后接手的人无法读懂代码,系统的维护工作越来越重,最终可能导致项目失败。

  三、接口在项目就是一个业务逻辑,面向接口编程就是先把客户的业务提取出来,作为接口。业务具体实现通过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,不需要改写现有代码,减少对系统的影响。从而让项目具有更大的扩展性。

4.常见的接口类型

  接口是指外部系统与系统之间以及内部各子系统之间的交互点。包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口、同级接口。

  常见 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 工具来试验一下,如下图:''

1232840-20190307155704927-1228173401.png

场景:get 型接口用于获取信息,多用于查询数据,如列表查询功能,点击查询按钮就调用一个 get 接口,然后把信息返回出来

特点:1)请求数据量小,2)参数暴露于 url 地址中,故存在安全隐患

2)post 型接口

说明:向指定资源位置提交数据(如提交表单、上传文件)来进行请求,post 请求可能会导致新资源的建立

场景:如注册、上传、发帖等功能,如用户在豆瓣网站对某本书进行收藏、写笔记、发表评论

特点:请求数据量大,安全性高

如豆瓣的发表评论的开放 api,见下图:

1232840-20190307155722927-1016151054.png

3)put 型接口

说明:put 请求用于向指定资源位置上传最新内容

场景:如用户在豆瓣网站修改对某本书的收藏、修改某篇笔记或修改评论

如豆瓣的修改评论的开放 api,见下图:

1232840-20190307155734127-617712613.png

4)delete 型接口

说明:请求服务器删除请求里 url 所标识的资源

场景:如用户在豆瓣网站取消对某本书的收藏、删除某篇笔记或删除评论

如豆瓣的删除评论的开放 api,见下图:

1232840-20190307155748988-302529172.png

5.不常见的接口类型(了解即可)

  不常见的 http 请求方式包括:head、connect、options 和 trace。

   head:HEAD 和 GET 本质是一样的,区别在于 HEAD 不含有呈现数据,而仅仅是 HTTP 头信息。换句话说,就是返回响应中没有具体内容,只获取报头。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用 GET,但这里用 HEAD 则意义更加明确。

   connect:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

   options:这个方法很有趣,但极少使用。它用于获取当前 URL 所支持的方法。若请求成功,则它会在 HTTP 头中包含一个名为 “Allow” 的头,值是所支持的方法,如 “GET, POST”。允许客户端查看服务器的性能。

   trace:回显服务器收到的请求,主要用于测试和诊断。

6.附录(get 和 post 的区别)

这个问题,面试中经常被提到。简单来说,可以从三个方面去回到这个区别:方式、大小、安全

1).方式

方式指的是参数的传入方式,GET 方法一般是指获取服务器上的数据,参数直接跟着 URL 后边,直接可以放到浏览器地址栏里,例如登录就是采用 GET 方法。而 POST 方法是指客户端给服务器上提交表单数据,所以 POST 是通过表单提交的,例如你网页上的新用户的注册、调查问卷和答题就是采用 POST 方法。

2).大小

上面已经知道 GET 是直接在浏览器地址栏输入,由于浏览器有限制,一般整个 URL 的长度可以很长,但是不能超过 2049KB 的大小限制,而这个 POST 就没有大小限制。

3).安全性

由于 GET 的参数是在浏览器地址栏直接拼接,暴露在互联网中,肯定不安全。POST 是通过表单数据提交,相对比 GET 方法更安全。

为了方便大家在移动端也能看到我分享的博文,现已注册个人微信公众号,扫描左下方二维码即可,欢迎大家关注,有时间会及时分享相关技术博文。
为了方便大家互动讨论相关技术问题,现已组建专门的微信群,由于微信群满 100,请您扫描右下方宏哥个人微信二维码拉你进群(请务必备注:已关注公众号进群),欢迎大家加入这个大家庭,我们一起畅游知识的海洋。
感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下左下角 “推荐” 按钮,您的 “推荐” 将是我最大的写作动力!另外您也可以选择【关注我】,可以很方便找到我!
本文版权归作者和博客园共有,来源网址:https://www.cnblogs.com/du-hong 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!


↙↙↙阅读原文可查看相关链接,并与作者交流