PAW 使用教程 - 手把手教你 API 接口测试

A kitten
蒋川
B 端数据开发,卡拉云联合创始人
最近更新 2022年01月24日

PAW 使用教程 - 手把手教你 API 接口测试

PAW 是 API 接口测试工具的后起之秀,Mac 下原生 HTTP 客户端,流畅趁手。它最大的特点是 UI 交互和易用性完胜市面上多数接口测试工具,另外 PAW 对 GraphQL 有着完美的支持。本教程将由浅入深,带领大家一起学习如何使用 PAW 进行接口测试。

一. 如何安装 PAW

如何安装 PAW

前往 PAW 官方网站下载,安装非常傻瓜,这里就不展开写了,如果安装过程有任何问题,欢迎评论区提问。

虽然 Paw 远景是做出最棒的原生 MacOS Paw,但市场需要,他们也在前不久上线了基于 Web 的 Windows 版和 Linux 版 Paw(PAW Web版入口),这个版本最终加入 RapidAPI 阵营(我们为什么加入) ,需要用 RapidAPI 账号来登录。

扩展阅读:API是什么: 一篇讲透API

二. API 模拟工具 GoRest

本教程使用模拟 API 工具 GoRest 进行模拟 API 测试。GoRest 有非常多的使用场景,比如,后端接口还没有准备好时,我们可以先用 GoRest 模拟测试,又或者你自己暂时不想搞服务器,也不想搭后端,也可以先用 GoRest 来测。

GoRest 可以理解为后端工程师帮你搭好了后端服务器,而且是完全测过的,几乎不可能有 Bug。GoRest 除了其中的数据是模拟的,所有 API 响应都是完全真实的,你可以通过 API 调用的返回数据判断你的前端是否有问题。

API 模拟工具 GoRest

GoRest 的 API 调用 URL 及规则。

通常 API 由 BaseURL + Endpoint 构成。比如上图中第一个 Resources:

https://gorest.co.in/public/v1/users

这个 API 是由 https://gorest.co.in + /public/v1/users 即 BaseURL +Endpoint 组成的。一般我们可以从 API 地址看出调取信息的大意,这段 URL 是调用 GoRest 上有关 users 的信息。

下一节,我们使用 GET 请求调用这个 API ,看看返回结果是不是与 users 信息有关。

三. 用 PAW 发出第一个 GET 请求

1. GET 请求基本操作

GET 请求是 API 中使用最频繁的请求之一,GET 请求仅从数据库中请求读取数据,不会修改服务器中的数据。

接下来,我们来创建一个基本的 GET 请求

GET 请求基本操作

(0)点击主界面左下角「+」号,新建一个请求页

(1)选择 GET 请求命令

(2)输入 API 地址:

https://gorest.co.in/public/v1/users

(3)在 GoRest API 设计中 GET 请求无需鉴权(下一节 POST 请求会讲解 API 鉴权问题),所有我们直接点击「旋转箭头」即可远程调取服务器信息。

GET 请求基本操作

点击「Send」,我们可以看到右侧的 Response 显示了 GET API 返回值。PAW 最大的特点就是表格化 JSON 格式,让所有信息一目了然。红框中第一段落是 users 信息概览,下面是一组组 user 信息。

get-json-text

当然,如果你想切换回文本格式的 JSON ,也很容易。、

如果我们只想看调取其中一位用户的信息应该怎么办呢?我们可以在 API URL 中带上参数。

2. 带参数的 GET 请求

带参数的 GET 请求

如果我们想查询 ID 为 1597 的用户信息,我们只需要在请求页面中的 URL Params(URL 参数) 标签页的 URL Parameter - VALUE 内填写对应的参数即可,之后 PAW 会自动在 API URL 中生成你填写的参数,使 URL 带上参数 GET 请求。

https://gorest.co.in/public/v1/users?id=1597

设置完成后,点击「旋转箭头」

get-params-back

我们可以看到,返回值中仅包含我们请求的 user id 为 1597 的用户信息。

3. GET 请求中的多条件查询

有时,我们需要使用 API 进行多条件查询操作,比如想找 name 值为 kalacloud ,同时 gender 值为 male 的用户。(特别提示:此格式是通用写法,但最终要看 API 的开发者如何约定调用方式)

BaseURL + ResourceName + ? + key1 = value1 + & + key 2 = value 2 ……

主 URL 之后使用 ? 连接参数,参数与参数之间使用 & 连接符连接。

https://gorest.co.in/public-api/users/?name=kalacloud.com&gender=male

GET 请求中的多条件查询

当然,我们可以直接在 PAW 的 URL Params 中直接填写 URL Parameter - VALUE

让 PAW 帮我们生成,然后点击「旋转箭头」

GET 请求中的多条件查询

可以看到 API GET 调取了我们设定的两个 VALUE 值的 data 信息。

扩展阅读:最好的 6 个免费天气 API 接口对比测评

测完 API 还要手动写前端?

试试卡拉云,可快速连接 API 和数据库,仅需简单拖拽组件,即可直接生成后台系统,数月工作量降至 2 天。

四. 在 PAW 中发送 POST 请求

这一节我们讲 POST 请求,POST 请求和 GET 请求最大的区别是 GET 请求仅使用只读形式读取数据,而 POST 请求会修改服务器中的数据,比如创建新用户,创建用户信息,上传图片等操作都是用 POST 完成的。

1. POST 请求前,使用 PAW 对 API 鉴权

POST 不再仅仅是读取数据,会涉及到对数据的写入,这种敏感的操作,一定会涉及到账号鉴权操作。

GoRest 模拟 API 工具使用 HTTP Basic Authentication 鉴权方式

POST 请求前,使用 PAW 对 API 鉴权

本教程演示最基础的 HTTP 鉴权方式。首先在 GoRest 注册账号,然后点击顶部的「Rest Console」进入控制页,我们可以在这个页面获得自己的 Auth Token,这段就是 API 用于鉴权的密钥。

POST 请求前,使用 PAW 对 API 鉴权

HTTP Basic Authentication 鉴权方式直接在 Headers 中以 Key - Value 的形式填写即可。

  • 在 Header Name 中填写:Authorization
  • 在 Header Value 中填写:Bearer b2b8c54159d0.....
  • API URL 填写:
https://gorest.co.in/public/v1/users
  • 选择「POST」,然后点击「旋转箭头」发送请求。

POST 请求前,使用 PAW 对 API 鉴权

如果 HTTP 响应代码返回 422,表示鉴权成功,只是没有填写数据。

特别提示:在本案例中使用的 GoRest API 是先检测 Token 是否正确,之后在检测 body 等信息。也有先检测提交信息是否正确再鉴权的 API,这取决于 API 的开发者怎么设定,那么这种情况 422 就不代表鉴权成功。所以谨慎起见,所有 4XX 开头的响应代码,你都可以理解为出现了错误。

 HTTP 响应代码返回 422

如果返回 401 说明鉴权验证失败(Authentication failed)你的 Token 可能复制错了,请检查后再试。

鉴权成功后,下一节,我们通过 API POST 请求将第一组数据写入服务器数据库。

(2)用 PAW 发出第一个 POST 请求

上一节,我们通过 API Token 鉴权成功,下面我们在请求页设置 POST 请求信息。

用 PAW 发出第一个 POST 请求

1.请求命令选择 POST,然后在地址栏填写 API 地址:

https://gorest.co.in/public/v1/users

2.在「Headers」标签页根据本文上一小节设置 API 鉴权 Access Token

3.在 Body 中选择 JSON 格式。

4.将下列 JSON 代码填入编辑框,此为本次 POST 发送给服务器的内容。

5.我们将注册一个新用户,用户信息包含在这个 JSON 文本里。

{
  "name": "kalacloud.com",
  "gender": "Male",
  "email": "Hi@kalacloud.com",
  "status": "Active"
}

最后,点击「旋转箭头」,发送 POST 请求。

用 PAW 发出第一个 POST 请求

我们可以看到 API 返回信息,已经在服务器中注册好新用户,新用户 ID 为 6319,并一起返回了我们刚刚提交的用户注册信息。

如果你也看到了类似的返回结果,那么恭喜,你的第一个 POST 请求被服务器成功接受,你通过 API 在服务器上注册了一个新用户。

扩展阅读:最好用的 5 款 React 富文本编辑器

五. 用 PAW 发送第一个 PUT 更新请求

PUT 请求一般用于更新服务器已有资源,如果服务器中没有对应的资源,那么 PUT 会创建相应的资源(特别提醒:虽然 PUT 有创建新资源的功能,但是否能创建成功,最终取决于你调用的 API 是否支持此功能)

打开你的 PAW 我们来创建一个 PUT 请求。

  • 点击右下角「+」号,新建一个请求页
  • 请求类型选择「PUT」
  • 根据第四节我们使用 POST 请求创建的资源 ID 为 6319 ,又根据 GoRest API 的文档得知,修改资源的 API 地址为 https://gorest.co.in/public/v1/users/{{ID}} ,所以我们要使用 PUT 修改 ID 为 6319 资源的请求地址应该写:
https://gorest.co.in/public/v1/users/6319
  • 选择在 Body 标签中填写 JSON 格式的资源修改信息。我们将 6319 中的邮箱由 Hi@kalacloud.com 修改为 Hello@kalacloud.com,所以我们在 Body 中填写以下代码。
{
  "name": "kalacloud",
  "gender": "Male",
  "email": "Hello@kalacloud.com",
  "status": "Active"
}
  • 选择 Header 标签,添加 API 鉴权信息,鉴权方法详见本文第四节《使用 PAW 对 API 鉴权》
  • 点击 「旋转箭头」发送 PUT 请求

用 PAW 发送第一个 PUT   更新请求

  • 如上图所示,可以看到红4位置 响应代码返回 200 ,这说明 PUT 请求已经执行成功。
  • 返回的 Body 信息中,email 字段已经更新为 Hello@kalacloud.com

六. 用 PAW 发送第一个 PATCH 更新请求

PATCH 请求一般用于服务器资源的部分更新,它相对于 PUT 提交的数据更少,不用提整个数据,只需要提交需要修改的字段即可。有关 PUT 和 PATCH 的更多区别,可查看本文第七节。

打开你的 PAW 我们来创建一个 PATCH 请求。

  • 点击右下角「+」号,新建一个请求页
  • 请求类型选择「PATCH」
  • 根据第四节我们使用 POST 请求创建的资源 ID 为 6319 ,又根据 GoRest API 的文档得知,修改资源的 API 地址为 https://gorest.co.in/public/v1/users/{{ID}} ,所以我们要使用 PATCH 修改 ID 为 6319 资源的请求地址应该写,到这里都和 PUT 请求修改资源的方法一样。
https://gorest.co.in/public/v1/users/6319

选择在 Body 标签中填写 JSON 格式的资源修改信息。上一节我们已经将 ID 为 6319 资源的邮箱改为 Hi@kalacloud.com ,接着我们用 PATCH 请求把这个邮箱改为 HelloWord@kalacloud.com

{
"email":"HelloWord@kalacloud.com" 
}
  • 选择 Header 标签,添加 API 鉴权信息,鉴权方法详见本文第四节《使用 PAW 对 API 鉴权》
  • 点击 「旋转箭头」发送 PATCH 请求

用 PAW 中发送第一个 PATCH   更新请求

  • 如上图所示,可以看到红4位置 响应代码返回 200 ,这说明 PATCH 请求已经执行成功。
  • 返回的 Body 信息中,email 字段已经更新为 HelloWord@kalacloud.com

七. PUT 和 PATCH 的区别

在 HTTP 协议中,PUT 和 PATCH 都是用于更新服务器资源的命令,但他们有着不同的格式和用途。

PUT 请求:一般用于更新服务器已有资源,如果服务器中没有对应的资源,那么 PUT 会创建相应的资源(特别提醒:虽然 PUT 有创建新资源的功能,但是否能创建最终取决于你调用的 API 是否支持此功能)

PATCH 请求:用于局部更新服务器现有资源,它不用像 PUT 更新资源中的一点点也要提交所有字段信息,PATCH 更新哪个字段就提交哪个字段的更新信息即可。

举例说明PUT 和 PATCH 的区别:

PUT 和 PATCH 的区别

同样是更新资源中的 Email 信息,PUT 需要带上资源中的所有信息,然后在更新(上图)

而 PATCH 则仅需要提交更新部分,即仅提交邮箱信息即可(下图)

PUT 和 PATCH 的区别

八. 用 PAW 发送第一个 DELETE 删除请求

我们在上文讲了获取(GET),创建(POST),更新(PUT / PATCH) 请求,接着我们来说说删除(DELETE) 请求。顾名思义,DELETE 请求执行可删除整个资源。我们来直接实践一次你就明白了。

打开你的 PAW ,跟随本教程一起创建一个 DELETE 请求。

  • 点击右下角「+」号,新建一个请求页
  • 请求类型选择「DELETE」
  • 我们来把上文刚刚创建的 ID 为 6319 的资源彻底删掉。根据 GoRest API 的文档得知,删除资源的 API 请求地址为 https://gorest.co.in/public/v1/users/{{ID}} ,所以我们要使用 PATCH 删除 ID 为 6319 资源的请求地址应该写:
https://gorest.co.in/public/v1/users/6319
  • 选择 Header 标签,添加 API 鉴权信息,鉴权方法详见本文第四节《使用 PAW 对 API 鉴权》
  • 点击 「旋转箭头」发送 DELETE 请求,删除对应的资源。

用 PAW 发送第一个 DELETE 删除请求

如上图所示,提交 DELETE 请求后,响应代码为 204 ,返回的 body 为空,删除成功。

特别提示:在 GoRest 的文档说明中,特别说了 DELETE 删除返回值的状态。

用 PAW 发送第一个 DELETE 删除请求

API 返回状态具体是怎么样的,还要看 API 的开发者是如何约定的,并非只有返回 200 才是成功的。

九. PAW 中的全局变量、环境变量、集合变量的设置

1. PAW 设置变量的意义

PAW 设置变量的意义

PAW 里可以设置环境变量,我们可以把某些重要的值抽象出来变成变量,方便我们做场景 / 条件切换。比如,我们可以把 baseURL、端口等信息抽出来,设置成「生产环境」和「测试环境」,之后,我们只需要切换标签即可快速将数据从一个环境切换到另一个环境中,非常方便。

2. 如何在 PAW 设置环境变量

如何在 PAW 设置环境变量

  • 点击左上角「Environments(环境)」选项,进入环境配置页
  • 左侧为 Group(组),我们设置 GoRest 相关的变量
  • VARIABLE 设置为 baseURL,VALUE 设置为 https://gorest.co.in ,这样我们就可以使用 baseURL 来代替这段 URL 了。下面的 ID,也是相同的意义。

如何在 PAW 设置环境变量

  • 在请求页面,环境变量不仅可以在 URL 中使用,还可以在 Params 中使用。
  • 在任意输入框中,点击 [ 呼出变量选择菜单。
  • 点击「旋转箭头」,返回响应代码为 200 说明请求成功,返回的 Body 信息是 ID 为 1597 的用户信息,说明环境变量已生效。

十. 批量执行集合测试

批量执行集合测试

当我们有一组 API 且这一组之间是相互关联的关系,使用手动测试效率非常低。这时,我们就要用到 PAW 的批量执行功能,我们可以把这些需要批量测试的 API 请求放到一个合集中。

  • 点击左下角的「文件夹」icon 创建集合,然后把所有请求放进去。
  • 点击「集合」,右侧会以卡片形式显示所有请求的状态。
  • 点击「Send Requests」,PAW 会按从上到下的顺序依次执行所有请求。
  • 执行成功与否的状态,可直接在集合页看到,如果有错误,也会显示出来。

十一. PAW 接口测试工具总结

如果你跟随本教程一起实践了 PAW 如何调用接口请求的过程,你一定能感受到 PAW 在各种使用细节的处理上非常精细,Mac 原生客户端也非常顺滑。但 PAW 毕竟只是 API 接口测试功能,测试完成,我们还是要自己写前端来开发出最终的工具。

有没有一种一遍测一遍就把后台直接做出来的工具呢?接着推荐一下卡拉云,卡拉云是一套低代码开发工具,支持多种数据库及 API 接入。你不仅可以在卡拉云中测试 API ,还能直接把返回的结果映射到组件上,不用写一行代码,只需简单拖拽即可搭建属于你自己的后台工具。

卡拉云用户认证系统

上图为使用「卡拉云」调用金数据 API ,然后将返回结果直接映射到表格组件中。你仅需一步,即验证了 API 可用性,又直接把你正在搭的工具给作出来了。立即试用卡拉云,一分钟快速搭建属于你自己的 API 工具。

如果你还有什么疑问,欢迎一起讨论。我的微信 HiJiangChuan。

卡拉云联合创始人蒋川的微信

扩展阅读: