ApiPost使用手册-后端Java开发

发布时间 2023-11-27 23:18:50作者: 爱编程DE文兄

前言

最近发现一款不错的国产接口测试工具,相比postman更符合国内后端开发的使用习惯,功能更强大

据官网所说:Apipost = postman + swagger + mock + jmeter

即 后端接口调试postman + 前端假接口模拟mock + 测试人员接口测试jemeter...集一身在apipost中

不管你是前端后端架构师测试人员等,都可以统一使用apipost

ok,优点说完了,该说缺点了:apipost诞生2021年,目前bug和界面模块调整会比较多,会出现使用体验不稳定的情况,如果追求稳定够用,那postman是首选,已经经历多年的推敲了

下载和安装

请前往官网:https://www.apipost.cn/ 下载【免费版】的
image

前言也说了,由于产品刚诞生不久,一直处于迭代变更中,所以只要下载最新的即可

这里我下载的是 win64 7.2.5的,下面演示基于这个版本,并且最重要下面的使用教程是基于个人后端开发使用,什么意思呢?

大家入职新公司,并不是每个公司都统一使用apipost、apifox这类国产接口测试工具的,依然后端以postman,前端mockjs,测试jmeter为主,你不能强求你的团队其他成员使用apipost

其二apipost提供了前端后端测试需求的功能,但作为后端开发只需要了解后端会用的部分功能即可

接口目录结构说明

apipost是基于团队为根节点的。你注册并登陆一个账号,就拥有一个团队,也只能有一个团队,团队及以下的层级结构依次是: 团队/项目/目录/接口

接口的层级管理十分重要,便于接口快速查找。这里以Java应用-idea工程为例:

idea的层级是:项目/模块/包
如果是单应用,那么项目 = 模块,只需要一个层级即可,在apipost新建一个项目对应
如果是微服务架构,那么一个项目下会有多个模块,需两个层级,idea项目对应apipost项目,idea模块对应根目录
idea的包结构 对应 apipost目录结构,但由于Java多个接口是可在一个类里的,因此类也需要作为一个目录,如下示例:
image

接口类型说明

apipost支持对 http接口,websoket接口,gRPC接口进行调试,但我们目前只针对http接口进行说明

http接口在apipost的使用:核心功能分为4个:API设计、API调试、ApiMock、自动化测试。

后面详说API设计、API调试,小提ApiMock,自动化测试不讲

全局参数和目录参数说明

全局参数:适用所有环境和目录的接口,在请求时自动带上参数。这里的参数可以是固定值,也可以使用变量{{}},分别有全局变量和环境变量

目录参数:适用指定目录的所有的环境接口,作用和全局参数一样,只是作用范围不同

新建接口

image

红框部分乃关注重点,下面依次讲解:

设计

image

【设计】是制定接口,后写代码,也可提前给到前端,界面包含四部分:

  1. 接口基础信息:接口地址、接口开发状态(开发中)等
  2. 详细说明:此接口的描述
  3. 预定义请求参数:定义请求参数
  4. 预定义响应期望:可对响应参数进行预定义并进行业务限制,可生成响应示例。比如:响应json中必须包含token字段、price字段必须是数字等

刚开始设计时,1.2.3弄好就行,4暂时不理它,等到【调试】后,可以从现有的响应示例导入

如若调用别人编写接口,可直接【调试】,不用【设计】
如若是自己编写的接口,尽量先【设计】,再【调试】,后模拟多种场景进行【进口用例】

调试

【调试】可测试我们或别人已编写好的接口,结构比较简单
image

注:【设计】和【调试】内容是保持同步的,点击保存时自动同步

接口用例

一个接口的测试需要考虑多种情况,这时需要多个接口的测试用例,则需要用到【接口用例】

Mock

Mock作为后端的我们不必使用,但如果前端安耐不住想提前调试接口,那么就把mockUrl给到前端
image

注:给云端MockUrl到前端最好

环境

apipost也提供了不同应用环境的接口调试,但环境的粒度不是接口级,什么意思呢?
比如说你现在是A接口,当前【开发环境】切换与【测试环境】,这时你去点击B接口,这时B接口也是【测试环境】,因此接口的切换并重置环境,也警惕我们要关注当前的应用环境,别调错接口了

环境变量

环境变量,可用于相同参数名,但由于环境不同导致参数值的场景。比如IP+端口,如下示例:
image

image

环境变量除了在预执行前后脚本里,其他一概 {{环境变量名}}进行获取使用

全局变量

全局变量的设置是通过【预执行操作】和【后执行操作】的,他和环境变量一样都是kv形式,不同在于作用域,全局是跨环境的。除【预执行操作】和【后执行操作】外,获取方式也是 {{全局变量名}}

后面会说明全局变量和全局参数的区别。

认证

我们知道有一些接口是得登录后才能访问的,即我们得有访问令牌才行。目前市面使用的认证协议有多种,可根据实际项目的协议进行选择,并设置token值

image

如若实在不清楚是哪种协议,在Header直接加即可,常见的无非:
Authorization: {{token}}
Cookie:{{token}}

预执行操作

预执行操作栏支持多脚本语言,对JS的支持最丰富,因此也建议大家在这写JS代码最好

预执行使用的不多,只有在请求前需要复杂计算的时候才会使用,比如加签操作,在请求参数里是无法直接确认签名的,必须通过计算才能计算出签名

后执行操作

后执行操作和预执行操作一样,不同是响应回来后对数据进行处理,也是用于一些特殊场景,比如说认证token赋值

以往对需认证的接口进行调试,我们是这样的流程的:

浏览器登录网站 —> 复制cookie里的token -> 粘贴到Header里。坏处是每个认证接口都得加一遍,并且过期之后,全部又得改一遍

现在我们设计成这样:

在apipost里设计和调试登录接口 -> 获取token后设置到环境变量A -> 在全局参数里设置每次请求时自动带上A;如此一来,每个认证接口无需手动加token,过期后只需再调用登录接口即可

实时响应

【实时响应】可查看响应数据的情况,如下:
image

只需重点关注:【美化】和【原生】即可。方便自己看用【美化】,但要把数据给到其他小伙伴时,用【原生】

image

这里的Cookie请求后,服务器给我们的Cookie,并非我们携带给服务器的。

如需对Cookie进行设置,可点击【Cookie管理器】
image

响应示例

image
这里的【响应示例】就是帮我们在【设计】中的预定义响应参数部分进行设置,对成功或失败情况,依次点击【从现有响应导入】和 【提取字段和描述】即可

这样就能同步到【设计】中的响应参数部分

控制台

【控制台】最大作用其实是能查看历史的接口情况。当想查看以往调试接口的请求响应情况,可查:
image

分享文档

接口文档可分享成web文档,供前端查看。可把项目或目录或指定接口分享出去,我建议开发中将整个项目进行分享,这样就不用给来给去了
image

断言和校验(了解)

当我们想知道响应的数据是否符合要求,比如说是否3秒内响应、响应结构是否为json等等,就可以用到【断言和校验】了

【断言和校验】对响应数据的判断,是要在【后执行操作】操作里做的,在这里不说那么多

除非你们的系统对每个接口响应有统一的硬性要求,那么可在全局参数里【后执行操作】去判断断言

内置Mock变量

image

我们有时候请求参数值不是固定的,比如说时间戳timestrap,按理也可以通过预执行脚本来获取,但有点麻烦,这时就可以用到apipost提供的内置mock变量了,根据需要会随机给我们生成数据。

使用方式:@XXX,图有具体例子

注:

  1. 分享时最好设置密码
  2. 当你的api保存更新时,文档也会自动更新

问题

全局参数和全局变量有什么区别?

说简单点,【全局参数】是针对所有请求发送时,将参数自动带上;【全局变量】仅仅是变量,请求不会自动带上,得需要别人来调用,并且【全局参数】里是可以使用【全局变量】的