作者 | tan日拱一兵

责编 | 屠敏

抗击疫情,在家办公。工作照常干,领导需要几个新功能接口开发。以前在公司办公,通常开发完的功能没什么问题,暴露出 Swagger 接口文档,直接找旁边的前端大人联调测试了。

当下,君在长江头,我在长江尾,夜夜思君不敢出门见君啊,一切测试全交给自己吧:

虽然想念前端,但是在家办公也绝对是和在公司办公一样一样的,高效不(qu)摸鱼。

插播背景

在多个产品线上来回穿切换着开发功能,以前用Postman的场景是这样的:

实际远远不止这几个文件夹来归类多个产品线的接口,Postman的功能非常强大,但是面对以下这些状况时,我觉得调试一个接口太麻烦了 (这里不讨论工具的好坏,工具是帮助我们提高效率的,每个人的需求也不一样,我只说明我个人遇到的一些情况,不喜请勿喷)

  • 查找配置多数要通过鼠标点来点去, 与习惯文本和快捷键操作的便捷方式违背

  • 调试别人接口要导入他们的一些数据,比较麻烦

  • 多个产品线环境变量查看不直观

  • 写完接口要来回切换应用进行测试,比如(IDEA <——> Postman)

  • 快速定位接口比较麻烦

  • ......

无意间发现 IntelliJ IDEA 的 HTTP Client 工具刚好能解决我上面提到的一些问题,简单的说就是能直接在 IDEA 的代码编辑器中 创建,编辑,执行 HTTP请求,就像这样(如果你心动了,请继续向下看吧):

于是,去官网查看一番作出如下整理:

走进 Http Client

HTTP Client 是 IDEA 默认绑定好并启用的插件,如果你那里没有启用,按照下图启用就好:

点击菜单:Tools — HTTP Client — Test RESTful Web Service

接下来进入下面的界面:

上图已给出提示,REST Client 是被弃用的,点击右侧的 Convert request to new format , 进到下面界面:

默认会创建一个名为 rest-api.http 的文件,该文件被存储在 Scratches 文件夹下,为了突出主角光环,关于 Scratch Files 请官网自行查看 (继续向下看不影响理解的),黄色框线的功能也非常有用,继续向下看

创建 HTTP request 文件

刚刚提到的 rest-api.http 就是 HTTP request 文件,可以通过两种方式创建:

  1. 通过快捷键  ⇧⌘N  然后选择 HTTP Request. (文件存放在Scratches 文件夹)

  2. 通过菜单操作 File—New—HTTP Request (文件存放在我们指定的目录下,就和我们平时创建class/package是一样一样滴)

如果在项目中使用,这里推荐使用第二种方式,因为它可以作为项目文件,通过 Git 提交到仓库,大家共享文件,共同维护接口请求数据,自然就不会出现调试别人接口还要导入他人数据的情况啦。

编辑 HTTP request 文件

我们模拟实际项目中场景来编辑文件:

  1. 用户登录,成功后获取 Token,通常是 POST 请求

  2. 用户后续访问行为都要在请求头中携带登录成功返回的 Token

通过点击 Add Request,选择相应的方法就可以编写啦

都知道,通常写一个完整的请求需要写好多内容,贴心的 IDEA 给我们提供了模版,我们只需要在 Examples 中找模版就可以啦,比如找 POST 请求的模版,选取合适的拷贝过去就可以,so easy~~~

到这里,就可以发送基本的请求了,但是,一个项目中接口众多,如何快速生成参数?如何快速切换端口?如何让登录之后的每个请求自动携带成功返回的 Token?我们需要更高级的玩法。

HTTP Client 进阶玩法

使用环境变量

在编写HTTP请求时,可以使用变量对其元素进行参数化。变量可以保存请求的host、port和path、查询参数或值、请求头值或请求体值等.

使用变量的方式非常简单,就用两个大括号包围定义好的变量就可以了,就像这样:

当然我们也要有地方定义变量。

定义环境变量

环境变量需要定义在环境文件中,环境文件有两种:

  1. 创建名为 rest-client.env.json 或者 http-client.env.json 的环境文件(其实里面就是保存 JSON 数据),该文件里可以定义用在整个项目上的所有常规变量

  2. 创建名为rest-client.private.env.json 或者 http-client.private.env.json, 看文件名你应该也猜到这是保存敏感数据的,比如密码,token等,该文件默认是被加入到 VCS 的 ignore文件中的,同时优先级高于其他环境文件, 也就是说,该文件的变量会覆盖其他环境文件中的变量值

里面的文件内容就像这样:

运行一下我们编写的请求吧:

IDEA自动识别多个环境,这样就可以轻而易举的切换环境,使用不同的变量值了(这皮鞋,你说亮不亮,还有更亮的)

巧用 response handler 脚本

上面提到,我们要让登录成功后的所有请求都自动携带成功返回的 Token,这样不用我们每次都手动将其添加到header中,同样有两种方式将脚本插入到请求中

  • 内嵌方式

  • 外部文件方式(就是将内嵌的脚本抽离出到文件中)

以登录返回获取的token设置到变量中为例,看代码:

注意

response.body.result.token 是我按照我登录返回的数据结构写的,不同结构不一样,你也可以是这样的 response.body.token , response.body 之后根据你的数据结构发挥吧。

我还是不放心,把我的登录返回结构(项目中怎样设计这种结构,可以参考之前写的Springboot返回统一JSON数据格式是怎么实现的?)粘贴在此处吧,这回理解了吧?

接下来我们就可以愉快的在其他请求上携带这个 Token 了

注意:

这里的Authorization 类型,大家根据自己的实际情况做修改,比如:Authorization:  Bearer {{auth_token}}

以上这些已经满足我的日常使用,没有进一步了解更多,更多关于 Response 脚本的用法请大家查看官网 HTTP Response reference吧

你以为到这里结束了(OMG),还有香料需要和大家分享,搭配上面功能使用更棒哦。

辅助功能说明

RestfulToolkit

RestfulToolkit 同样是个插件,在插件市场搜索安装即可。

安装了这个插件后,打开侧边栏,项目的所有接口信息都会展现在此处:

我常用的功能就是把指定接口生成的JSON数据拷贝到 HTTP request 文件中,免去手写的麻烦了,你说方便不?

除此之外,使用快捷键 cmd+\, 可以根据关键字快速找到接口,回车迅速到达代码接口位置,这也是带来了极大的便利。

Live Template

项目中请求内容各有不同,IDEA标准提供的GET POST 请求案例可能还不能满足我们的需求,这时我们就可以利用 Live Template 定制自己的模版,迅速生成request 内容,像这样:

JSON Viewer

JSON Viewer是一款 Chrome浏览器插件,在浏览器 Omini-box 中输入 json-viewer + Tab, 粘贴json在此处,就可以对json数据进行格式化了。

打开开发者工具,在Network下双击某个HTTP请求,会自动在 new tab下格式化返回的json数据,免去了粘贴数据然后格式化的烦恼

关于自测接口的干货我抖的差不多了,抖抖更健康。

总结

再次重申,不做工具党,也没有任何批判之意,工具只是为了让我们更高效的工作,选择适合自己的。从上面的介绍中来看,IDEA HTTP client 搭配我说的几个辅助功能很好的解决了文章开头说明的几个问题,对我个人情况来说,足矣!!

参考

  • Testing RESTful web services:

    https://www.jetbrains.com/help/idea/testing-restful-web-services.html

【End】

推荐阅读 

☞AI 口罩督查官诞生,识别率高达 85%!

☞飞书的前世今生

☞AI口罩“督查官”诞生记

☞一个学渣的 CTO 逆袭之路

☞面试还搞不懂Redis,快看看这40道面试题!| 博文精选

☞远程办公是一阵“过渡风”还是会“继续燃烧”?

你点的每一个在看,我认真当成了喜欢

猛戳“阅读原文”,参与调查!

IntelliJ IDEA 的这个接口调试工具真是太好用了!相关推荐

  1. IntelliJ IDEA的这个接口调试工具真是太太太太太好用了!

    你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough ...

  2. android接口调试工具

    目录 开发神器介绍 功能轻描淡写 视频效果演示 项目下载地址 开发神器介绍 你好! 这里是ApiDebug接口调试工具的升级版,它具有良好的UI交互和强大的接口调试功能. 我们对"ApiDe ...

  3. 微信在线接口调试工具的使用

    2019独角兽企业重金招聘Python工程师标准>>>  微信公众平台为公众号开发者提供了网页版的接口调试工具. 在线测试接口地址:https://mp.weixin.qq.com/ ...

  4. 微信公众平台接口调试工具——蓝牙设备调试篇

    微信公众平台接口调试工具--蓝牙设备调试篇 第一步:获取token 需要两个参数:appid和appsecret 下面将如何获取上面两参数 首先进入公众号,点击开发者工具,点击公众平台测试账号,如下图 ...

  5. 微信开发实战(2)—微信公众平台接口调试工具

    微信公众平台为公众号开发者提供了网页版的接口调试工具,开发者可以直接在网页中调用对应的接口,比如获取access_token接口,创建菜单接口,发送消息接口 等等. 先看一下界面,访问: http:/ ...

  6. 调试接口小技巧-通过接口调试工具去下载上传文件

    前言 在一些开发场景,比如文件的下载,在我们自己调试的时候,会有一些伙伴不知道怎么调试,其实是和普通的接口一样的,只是有一些小技巧,多余的设置需要知道 我最常用的两个接口调试工具是PostMan和Ap ...

  7. 利用微信接口调试工具设置公众号个性化菜单

    利用微信接口调试工具设置公众号个性化菜单 微信接口调试工具 公众号菜单的json格式示例 默认菜单的post接口 个性化菜单的post接口 如何用接口调试工具添加个性化菜单 其它参考文章 微信接口调试 ...

  8. Http接口调试工具-在线postman工具

    Http接口调试工具-在线postman工具 Http接口调试工具-在线postman工具,在线调试,方便了很多,可以支持保存 http://www.toolscat.com/dev/postman

  9. 接口调试工具 Postman 使用详解

    一.什么是 Postman 在我们开发web项目的时候,很多时候需要测试自己的接口,在没有接口调试工具之前,程序员们只能自己开发一个简单的页面,然后填写参数进行调试,这样做费劲死了. 后来 Postm ...

最新文章

  1. 在公司的局域网内,组长让你在自己的虚拟机部署项目,大家等着访问测试,该怎么办???...
  2. pgsql数据库默认配置事务类型_PostgreSQL数据库事务出现未知状态的处理方法
  3. C. Longest Simple Cycle
  4. materialize_使用Materialize快速介绍材料设计
  5. B 站崩了,受害程序员聊聊
  6. java calendar clear_java.util.Calendar clear()方法
  7. [Python] L1-053 电子汪-PAT团体程序设计天梯赛GPLT
  8. 观看台式计算机组成观后感,计算机组成原理实验一:运算器实验
  9. 我的Android进阶之旅------Android ListView优化详解
  10. 【SPOJ:FAVDICE】Favourite Dice(概率dp)
  11. debian 系统配置网易镜像源
  12. 学习《医学三字经白话解》之气喘
  13. 8届国赛java试题 5: 填字母游戏
  14. android广告id,谷歌广告 ID 获取
  15. 推特正式起诉马斯克 要求强制其按原协议完成收购
  16. 2021年大一下网页期末作业(纯html+css实现)
  17. LIN总线协议详解10(LIN的API)
  18. Android 让注册商标R往上移
  19. java集成华为云obs上传下载实战
  20. android 通话背景音,360 Vizza设置通话背景音的方法

热门文章

  1. mysql 准则 杂谈
  2. 【BZOJ】【1045/1465】【HAOI2008】糖果传递
  3. 四种浏览器对 clientHeight、offsetHeight、scrollHeight、clientWidth、offsetWidth 和 scrollWidth 的解释差异...
  4. 地理空间数据Geometry在MySQL中使用(二)
  5. 力扣--36有效的数独
  6. python爬取新闻存入数据库_Python爬取数据并写入MySQL数据库的实例
  7. 记录——《C Primer Plus (第五版)》第十章编程练习第二题
  8. Flutter基础—定位对齐之大小比例
  9. 中国结肠镜设备行业市场供需与战略研究报告
  10. 2021-2025年中国制药废物处理与管理行业市场供需与战略研究报告