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

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

时间2025-05-04 17:06:55分类IT科技浏览3931
导读:大多数开发者可能都用过 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
网站收录技巧有哪些(探秘收录网站:了解SEO的第一步)