首页IT科技postman复数英语(Postman 进阶技巧)

postman复数英语(Postman 进阶技巧)

时间2025-09-19 07:07:48分类IT科技浏览6909
导读:大多数开发者可能都用过 Postman,根据其官网的介绍:Postman 是一个用于构建和使用 API 的 API 平台,简化了 API 生命周期的每个步骤,提供更便捷的团队协作,因此可以更快地创建更好的 API。这里的 API,除了我们常用的 HTTP API 之外,还包括 Websocket(BETA),gRPC。本文中,我们...

大多数开发者可能都用过 Postman                 ,根据其官网的介绍:Postman 是一个用于构建和使用 API 的 API 平台                          ,简化了 API 生命周期的每个步骤         ,提供更便捷的团队协作        ,因此可以更快地创建更好的 API                 。这里的 API                          ,除了我们常用的 HTTP API 之外                 ,还包括 Websocket(BETA)        ,gRPC                          。本文中                          ,我们将以最常用的 REST API 作为例子         。

假设我们在开发一个类似微博的项目                 ,你是一个后端开发人员,前端分为手机端和网页端                          ,而由于采用了 RAD 或者敏捷开发方法                          ,你随时需要将在开发环境测试好的最新的 API 改动发布至测试环境(或 Stage 环境),并为测试人员或者前端开发人员提供最新的 API 文档                 。下面我们看看在这个过程中                 ,Postman 能如何帮助简化 API 声明周期以及提供更便捷的团队协作                         。

开发阶段

在这个阶段                          ,不管后端使用什么语言开发         ,最终开放的是 REST API 接口                 ,在本文的示例中                          ,我们使用 Jmix 框架开发基于服务的 REST API         。Postman 的最基本用法         ,就是开发人员可以在这一步建立一个 API 集合(Collection)        ,其中包含项目的所有 API                          ,这里我们创建了一个叫 Corp 的集合                 ,包含所有功能的 API:

图中重要的三个部分:

API 集合 单个 API 的请求方式(POST)和请求地址 单个 API 请求体

到这一步为止        ,就是 Postman 的基础用法了                          ,我们创建一个 API 集合                 ,而集合是支持导出的,可以导出为 JSON 文件                          ,再发给其他同事                          ,他们可以导入到 Postman 里面使用         。

使用变量做第一次优化

在上面的图中,我们展示了集合中的第一个接口 - 获取 Jmix 本地 token                         。而这个 token                 ,我们需要在以后的每个请求中都用来做用户认证                 。如下图:

这里有一个问题                          ,就是 token 会过期         ,比如我们今天拿到的 token                 ,可能明天就没法再次使用了         。而我们需要再次获取 token                          ,然后挨个复制到每个请求中吗?这个未免太麻烦了                          。Postman 提供了环境变量的机制                 。有三种类型的变量         ,分别是:

全局变量(Globals):顾名思义        ,这里定义的变量在所有集合的所有 API 中都可使用。 集合变量:在集合中                          ,有一个 Variables 标签页                 ,可以定义集合级别的变量        ,这些变量                          ,只能用于集合内的 API                          。 环境变量:需要建立一个环境变量的集合                 ,这里面可以定义一组该环境内的变量,可以用在任何集合                          。后面我们会说到用法。

我们可以声明一个名为 jmixToken 的集合变量存储 token                          ,至然后在请求中使用 {{jmixToken}} 的方式引用变量即可:

除了 token 之外                          ,我们在 API 中使用的相同类型的参数也都可以声明为变量,而变量可以用在请求的任何部分                 。例如                 ,我们在发新帖的 API 中使用的请求体如下                          ,我们分别使用了 Postman 提供的随机生成 UUID 的 $guid 变量                 、集合中存储测试用户 Id 的 userId 变量         ,以及存储我们博客地址 https://blog.abmcode.com 的 blogUrl:

{ "postId":"{{$guid}}", "userId":"{{userId}}", "content":"欢迎访问:{{blogUrl}}" }

使用脚本进行第二次优化

经过了上面的第一轮优化后                 ,我们的 API 里面会多了许多变量                          。但是还存在一个问题                          ,就是我们在拿到 token 后         ,仍然需要手动更新一下 jmixToken 这个变量        ,否则各个 API 仍然使用的是过期的 token         。这还是有点麻烦                 。

好在 Postman 提供了测试脚本的功能                          ,可以解决这个小麻烦                 ,我们需要在获取 token 的请求中编写一个测试脚本        ,用于更新 jmixToken                          ,这样我们一旦重新获取了 token                 ,就可以保证其他 API 使用的是最新的 token                         。

编写代码的位置如下图所示,在 API 的 Tests 标签页         。并且更贴心的是                          ,Postman 在右侧给了一些常用的代码片段                          ,点击即可使用,例如                 ,获取全局变量                          、设置集合变量等         。

测试脚本是 JavaScript 的                          ,可能需要有一点 JS 基础         ,具体每行的作用                 ,请参考注释                         。这里我们对返回结果做了两个测试                          ,分别是验证 HTTP 状态码必须是 200 以及检测返回结果中必须包含 access_token 这个属性                 。需要注意的是         ,这两个测试如果有任意一个失败        ,都将抛出异常直接退出 JS 的执行                          ,此时不会走最后一句设置变量的语句:

// pm.test 表示这是一个测试         。 pm.test("Set Global variable jmixToken", function () { // 测试 1 - 返回状态码为 200 pm.response.to.have.status(200); // 获取返回结果的 json var jsonData = pm.response.json(); // 测试 2 - 返回的 json 中必须有 access_token 字段 pm.expect(jsonData).to.have.property(access_token); // 设置全局变量 jmixToken pm.globals.set("jmixToken", jsonData.access_token); })

这里我们还可以做一点优化                 ,那就是针对上面代码中的 “测试 1                 ”        ,我们检查了 HTTP 的返回状态码为 200                          ,其实针对所有的请求                 ,我们可能都需要做这个检查,那么如果不复制粘贴代码                          ,有没有简化的方法呢?

有的                          ,Postman 提供了集合级别的测试脚本,定义在集合中的测试脚本                 ,会对每个 API 都适用                          。比如                          ,我们可以把验证 HTTP 状态码的测试放到集合中:

小结

到这里         ,我们开发阶段对于请求的优化就结束了                 ,通过使用变量                          ,可以优化 API 中的数据         ,将相同的数据都定义在变量中                 。通过测试脚本        ,我们可以对 API 进行测试                          ,也可以更新各种变量                 ,避免手动修改的麻烦。我们的示例中演示的更新 token 是最常见的脚本功能        ,除此之外                          ,比方说我们要测试的发帖和回帖功能                 ,可以在发帖后将帖子的 ID 保存在变量中,测试回帖功能时                          ,直接使用变量存储的帖子 ID                          ,这些具体的业务场景,可以根据项目灵活变化                          。

测试阶段

开发完成后                 ,我们就需要将 API 部署至测试或者 Stage 环境                          ,交给测试人员或者前端开发人员进行试集成了                          。那么在这个阶段         ,你或许想在测试人员工作前自己先测试一遍                 ,或者如果测试有问题                          ,而你作为后台开发人员         ,也难免需要直接调用测试环境的 API 观察输出结果。这就有了一个新的问题:我们在之前的接口定义都是 http://localhost:8080 开头的地址        ,怎么能方便地切换到测试地址呢?

答案还是用变量                 。但是这一次                          ,我们使用的是环境变量集合                          。

例如                 ,我们可以创建两套环境变量        ,分别为 env_dev 和 env_prod                          ,其中都定义了变量 jmixAppUrl                 ,在 env_dev 中,该变量的值为 http://localhost:8080                          ,而在 env_prod 中                          ,该变量的值为 https://your.test.env.ip:test_port,然后修改每个请求                 ,将原本的 http://localhost:8080 地址换成变量 {{jmixAppUrl}}:

使用时                          ,通过右上角的环境变量集合切换功能         ,就可以切换不同的环境了         。

发布文档

如果你的测试或者前端也使用 Postman                 ,那么可能导出 API 集合文件再交由同事导入                          ,可能是比较方便的方法                 。但其实 Postman 在文档发布这个功能上         ,也做了不少工作                         。

右键点击集合        ,有一个 View documentation 菜单                          ,或者通过下图的按钮也可以查看集合的文档

在查看文档时                 ,右上角有一个 Publish 按钮        ,可以将你的文档公开发布                          ,并提供一个 URL 地址用于访问         。这样的话                 ,其他同事如果不使用 Postman,只需要访问该地址                          ,就可以看到 API 的文档         。

在发布时                          ,可以选择环境变量集合,这样会用集合内的变量值直接替换 API 中的所有变量                 ,这样一来                          ,看文档的人不会读到看不懂的变量                         。下图是一个发布的文档示例         ,前端用户还可以根据编程语言                 ,选择对应的代码样例:

发布后的文档会实时更新                          ,也就是说         ,任何你在 Postman 中对集合 API 的修改都会实时同步至文档中                 。比如新增或删除某个 API         、修改 API 请求体等等         。

项目级别优化

其实        ,我们最后还做了一个项目级别的优化                          ,这个案例可能不具有通用性                 ,但是也可以给大家一个思路:

公共 API 抽离

由于我们的项目后台都是基于 Jmix/CUBA 框架开发的        ,因此                          ,我们做了如下改动:

新建 Postman 集合 - Jmix/CUBA 通用接口                 ,其中包含了 Jmix 和 CUBA 各自获取本地 token 的 API,以及从我们 SSO IDP 获取 token 的 API                          。 新建全局变量存储 token                          ,全局变量有 jmixToken                          ,cubaToken,ssoToken                 。并且在上述三个接口的测试脚本中                 ,分别更新这三个全局变量。

这样做的好处是                          ,不需要在每个项目中单独提供获取 token 的 API         ,并能保证获取的 token 全局可用                          。

统一添加 Authorization 请求头

在业务 API 集合中                 ,我们为 Collection 添加了 Pre-request Script                          ,这个脚本会在集合内的每个请求发出前先执行                          。我们就是用这个脚本为请求添加请求头         ,代码很简单        ,例如                          ,对于使用 ssoToken 和 jmixToken 的 Jmix 项目                 ,我们是这样做的:

因此        ,对于集合内的每个请求                          ,不需要单独设置 Authorization 请求头了。

统一业务 API 返回结构

最后                 ,我们在代码层面对每个业务 API 的返回结构做了统一,都使用这样的返回结构:

public class RestResult<T extends Serializable> implements Serializable { /** * 业务状态码 */ private int businessCode; /** * 提示信息 */ private String msg; /** * 数据 */ private T data; //... }

我们为所有的成功返回都定义了同一个 businessCode                          ,这样的话                          ,在 Postman 的 Tests 脚本中,可以添加代码直接检查业务层面的返回结果是否成功                 ,例如                          ,我们定义 10000 为业务结果正确的返回值:

pm.test("Success return", function () { pm.response.to.have.status(200); pm.expect(pm.response.json().businessCode).to.eql(10000); })

结语

本文介绍了一些使用免费 Postman 的进阶技巧:变量                 、脚本                         、文档发布                 。而现在 Postman 也在往 SaaS 方向发展         ,推出了团队协作功能                 ,像文档发布         、API 导出导入这些功能在团队模式下用不到了                          ,因为 API 集合可以协作完成         ,文档也可以团队内共享                          。Postman 作为一款 API 平台        ,确实能在一定程度上提升团队的开发效率和协作         。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
故障诊断方法的分类(深度学习&故障诊断初学者 – 学习路线)