什么是接口

Posted on Wed, 25 Dec 2024 10:35:00 +0800 by LiangMingJian


什么是接口

我们先来看一张图,从这张图来了解什么是接口。

如图中 A 线,A 线指向一个电灯的开关,这个电灯的开关就可以称为接口。它有两个状态——开和关,我们可以通过选择不同的参数来实现电灯的开关。

实际我们知道电灯的开关其实是通过零线、火线来操控的,而接口呢,其实就是把这些复杂的操作简化了,让你看到的只有一个开关。而我们做接口测试也只需要测试这个开关就可以完成任务。

  • 当你访问 http://127.0.0.1:8080/light?opt=open ,让零线、火线连通,此时灯亮。
  • 当你访问 http://127.0.0.1:8080/light?opt=close ,让零线、火线断开,此时灯灭。

接口的结构

一个URL就是一个接口,接下来需要理解一下HTTP的URL是怎么组成为一个接口的,如图:

  • 请求协议:如 http — 普通的http请求,https — 加密的http请求,ftp — 文件传输协议
  • 请求IP:提供接口的系统所部署的服务器地址
  • 请求端口:如果不填端口,默认是80,否则需要填写端口号
  • 接口路径:指系统提供的接口在什么位置
  • 接口参数:参数在接口路径后,用“?”来表示路径地址完了,剩下的都是参数了,用“&”来区分参数个数
  • 参数值: 接口参数的值

接口的 HTTP 参数

请求方式

  GET --- 通过请求URI得到资源
  POST --- 用于添加新的内容
  PUT --- 用于修改某个内容
  DELETE --- 删除某个内容
  CONNECT --- 用于代理进行传输,如使用SSL
  OPTIONS --- 询问可以执行哪些方法
  PATCH --- 部分文档更改
  PROPFIND (wedav) --- 查看属性
  PROPPATCH (wedav) --- 设置属性
  MKCOL (wedav) --- 创建集合(文件夹)
  COPY (wedav) --- 拷贝
  MOVE (wedav) --- 移动
  LOCK (wedav) --- 加锁
  UNLOCK (wedav) --- 解锁
  TRACE --- 用于远程诊断服务器
  HEAD --- 类似于GET, 但是不返回body信息, 用于检查对象是否存在, 以及得到对象的元数据

请求头

请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度

  Accept:image/gif.image/jpeg./
  Accept-Language:zh-cn
  Connection:Keep-Alive
  Host:localhost
  User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
  Accept-Encoding:gzip,deflate.

请求体

请求体就是请求等正文了,可以有很多种请求体。最常用的是 json格式

进行接口测试前的准备

做接口测试,需要开发提供接口文档。最重要的有这几点,确定了这些,才能做好接口测试。

  • 被测接口的地址
  • 接口参数,以及各个参数的说明
  • 必要的http头与http体 ( http头是可以自定义的,可以用来校验是否是自己人访问 )
  • 接口返回什么值,以及各个返回值的说明
  • 接口是干什么的

RESTful API

一个用户接口可以通过以下4种不同方式的请求,来做不同的事情:

  • 获取用户信息
  • 创建用户
  • 修改用户
  • 删除用户

你完全可以像“灯”的那个例子,用GET请求来传递不同的参数来实现,但是这样如果接口多了,就会很混乱,很难管理。这时,我们需要一种规则:

  • 当用“GET”方式时,只用来获取数据,成功了返回http状态码200
  • 当用“POST”方式时,只用来创建数据,成功了返回http状态码201
  • 当用“PUT”方式时,只用来修改数据,成功了返回http状态码203
  • 当用“DELETE”方式时,只用来删除数据,成功了返回http状态码204
  • 当请求发送失败,返回http状态码400

这样子的规则,我们称它为 RESTful 标准。

如何进行接口测试

前面的搞清楚了,接口测试就简单了,无非就是这几个步骤。

  • 拿到接口的url地址
  • 查看接口是用什么方式发送
  • 添加请求头,请求体
  • 发送查看返回结果,校验返回结果是否正确

这是正常的一套流程,异常的情况,比如参数不传值,传的值不正确,明明要求用"GET"请求发送,偏要用"POST"请求发送等等,有很多异常情况,这里便不再举例。

参考文件 1:接口测试总结 @猴子请来的救兵