范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Postman的高效使用技巧,你知道吗?

  大多数开发者可能都用过 Postman,根据其官网的介绍:Postman 是一个用于构建和使用 API 的 API 平台,简化了 API 生命周期的每个步骤,提供更便捷的团队协作,因此可以更快地创建更好的 API。这里的 API,除了我们常用的 HTTP API 之外,还包括 Websocket(BETA),gRPC。本文中,我们将以最常用的 REST API 作为例子。
  假设我们在开发一个类似微头条的项目,你是一个后端开发人员,前端分为手机端和网页端,而由于采用了 RAD 或者敏捷开发方法,你随时需要将在开发环境测试好的最新的 API 改动发布至测试环境(或 Stage 环境),并为测试人员或者前端开发人员提供最新的 API 文档。下面我们看看在这个过程中,Postman 能如何帮助简化 API 声明周期以及提供更便捷的团队协作。  开发阶段
  在这个阶段,不管后端使用什么语言开发,最终开放的是 REST API 接口,在本文的示例中,我们使用  Jmix[1]  框架开发基于服务的 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。环境变量:需要建立一个环境变量的集合,这里面可以定义一组该环境内的变量,可以用在任何集合。后面我们会说到用法。
  Postman 变量定义
  我们可以声明一个名为  jmixToken  的集合变量存储 token,至然后在请求中使用 {{jmixToken}}  的方式引用变量即可:
  token 存储
  除了 token 之外,我们在 API 中使用的相同类型的参数也都可以声明为变量,而变量可以用在请求的任何部分。例如,我们在发新帖的 API 中使用的请求体如下,我们分别使用了 Postman 提供的随机生成 UUID 的  $guid  变量、集合中存储测试用户 Id 的 userId  变量,以及存储我们博客地址的 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 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 平台,确实能在一定程度上提升团队的开发效率和协作。  参考资料
  [1] Jmix: https://www.jmix.cn

格林我对湖人的交易方案感兴趣,我对和勒布朗联手感到好奇美国媒体FadeawayWorld为湖人和勇士提出了一笔交易方案,并声称这笔方案能带来双赢的效果。勇士能继续提升阵容天赋,而湖人需要做出改变,詹姆斯已经快要38岁了。具体交易方案是考勤系统app开发多少钱?开发周期多久?在移动互联网时代,随着市场的需求,手机软件的功能日趋多样化,其中移动出勤率应用的开发应运而生。考勤APP软件提高了企业的经营效率,包括对日常考勤制度的智能化管理对工作安排的检查以及每月存1000元,都存3年的定期,坚持10年有多少钱?把钱存银行,可以说是最稳的理财方式之一,而且门槛也不高,可以一点一点地往里存。那么,如果每月往银行存款1000元,且都存3年的定期,到期之后继续存,坚持10年后能有多少钱呢?每月存冬病夏治三伏贴所谓冬病夏治,是指对于一些在冬季容易发生或加重的疾病,在夏季给予针对性的治疗,提高机体的抗病能力,从而使冬季易发生或加重的病症减轻或消失,夏季三伏天是一年中天之阳气最盛和人之阳气最面条比米饭更养胃?这2种面条劝你少吃面条和米饭相比,很多人觉得吃面养胃,也更好消化,于是天天都吃面。那么事实真的是这样吗?天天吃面又真的好吗?吃面,真的比吃米好吗?1米和面的营养成分总体相差不大从热量上来看,每10096家央企跻身世界500强国企改革取得重大突破国企高质量发展迈出实质性步伐国有资产监管体制更加成熟定型6月17日上午,中宣部举行中国这十年系列主题新闻发布会,在会上国务院国有资产监督管理委员会副主任翁杰明介经济学思维8大核心流派如果你不想成为别人决策的被动受害者,就必须知道经济学不同研究方法的一些思想。因为每一个影响我们的经济政策和公司行为,背后都有某种经济理论作为支撑。今天就聊聊经济学的8大核心流派,以小麦暂停收购又被放大了这两天,小麦市场各路消息不断,又兼之一些企业下调收购价格,更是搅动得一些人惶恐不安!市场消息,最近几天中储粮对一些架空期比较宽松的库点暂停收购,这被一些别有用心和不明真相的人趁势炒618,我给长辈选了一把指静脉识别的TCLP10智能锁有别于之前的618,今年的年中购物节我特别上心。原因是爸妈为了退休养老而在郊区添置的新房已经装修好了,选购家电这事儿自然而然地就落到了我的身上。虽说有着数码博主的认证,但其实我也没手握3000元,应该买Redmirealme还是iQOO?看完分析不走弯路顶级旗舰手机固然很棒,但是价格让人望而却步,因此对于预算不足的朋友该选择哪款手机呢?比如手握3000元的用户,应该如何选择呢?按照目前国内手机市场来看,3000元以内Redmire今天出门维修了几台机器,总结一下常见的打印机问题兄弟7080重影上图是修第一台打印机,是一台兄弟的7080d打印机,客户描述打印出来有阴影!这种机器最好成套换,单独换加热棍安装不好容易烧,定影棍上下棍会粘在一起,同时主板也会烧!
移动支付背后的硬科技,被低估了!你的钱袋子,是谁在默默守护?移动支付,在中国已经十分普遍,带上一个手机就可以轻松出门。然而,这看似简单的扫码支付背后,其实并不简单。在科幻电影流浪地球2中,为了炸月球,人类需要在短时间内解密全球所有核弹的保密2023了,还有人用iPhone5s?iPhone5s?iPhone5s作为最后一款带有乔布斯风格的手机,发布至今已经10年了,可是就是这样一款手机,到现在日常体验完全不输安卓,而且在这个特殊的时代,iPhone5s的搭载的指纹识别或许2033年时近四成家务或由机器人承担新华社北京2月23日电日本与英国的研究人员访谈了65名人工智能专家后预测,10年后机器人或将承担近四成家务。英国牛津大学和日本御茶水女子大学的研究人员调查29名英国专家和36名日本出乎意料!台积电拿下1000亿颗芯片订单,跟中芯国际竞争靠着在半导体领域的积累,老美开始利用这些专利技术向其他国家施压,不仅收取高昂专利费,还拿来针对其他国家的企业,而华为就是活生生的例子,在老美迫使下,台积电断货了华为麒麟芯片的代工,为了避免儿童出现心理健康问题,父母应该重视家庭教育观念与方式在阅读此文前,诚邀您点击一下关注,既方便您进行讨论与分享,又给您带来不一样的参与感,感谢您的支持。家庭是儿童成长过程中不可缺失的一环,在儿童发展的各个方面都起到举足轻重的作用,是儿苹果iOS16。4代码曝光新的计算模块设备IT之家2月23日消息,9to5mac在上周发布的Xcode16。4测试版中的苹果iOS16。4开发者磁盘镜像中发现了一个新的ComputeModule(计算模块)设备,可能暗示苹腐烂的苹果,还敢吃吗?苹果是一种高营养价值的水果,含有多种矿物质和维生素等营养素。在日常生活中,一些人会将局部腐烂的苹果削去变质的部分后继续食用,以减少浪费。然而,疾控中心的公众号发布的文章提醒人们,这从贷款的计算方式入手,告诉你贷款月供怎么算?前两天,一则公众人物的社交平台的发言特别抢镜,在网上引起了轩然大波,30年贷款,利息要赶上本金了,等额本息或者等额本金的还款方式一度成为民众讨论的热点,这里探寻本质,从贷款的计算方凯特王妃去年公务量险垫底,今年狂冲业绩,网友却说她太假一大早,凯特王妃送完剑桥三小只上学后,风尘仆仆地赶到斯劳的牛津之家的疗养院进行访问,主要目的是看看新技术的应用对老年人的生活改善。此次亮相,凯特重穿了MaxCo地驼色大衣,内搭选择在尼泊尔的一程狂飙EP。0降落LANDINGNOW尼泊尔小百科尼泊尔是南亚内陆山国,位于喜马拉雅山南麓,北邻中国,其余三面与印度接壤,首都加德满都,国土面积约14。7万平方公里,人口约3000万(241岁宋慧乔时装周生图曝光!下半张脸难掩老态,刘海造型翻车终于有明星勇闯时装周的热闹可以围观啦!最近伦敦米兰巴黎三大时装周排队上线,超10位内娱明星赶去海外争奇斗艳,不过这次主角不是他们,而是一位我们都熟悉的韩星宋慧乔。出生于1981年1