Idea rest client 使用(全) 真香

看了网上好多的 idea rest client 讲解,大多都只是讲了它如何如何好,都只是简单的测了一个 json 的接口而已,个人实践了一把,里面还是有挺多坑的,但不得不说,那个脚本化处理请求的功能确实挺棒。

脚本化配置确实很方便,linux 使用文件来配置环境变量代替了windows 的可视化配置,sublime 使用文件来配置它的所有配置项取代传统的可视化配置,这种文件化的方式可以做到可迁移,多端即时同步和多人共享,有过经历的人自然懂我在说什么。

本文内容:

关于脚本化 mock 的实践,免复制 token 实践,文件传输实践

关于语法

请求的语法基本上和 http 协议内容是一致的,结构如下

### 使用三个 # 来分隔多个请求
GET/POST 请求地址(可拼接查询参数)
请求头键值对

请求体

> {% %}

# 响应处理 > 打头和 shell 很像,然后用 {% %} 括起来的脚本内容 ,在脚本中可以使用 javascript 原生语法,这就很强大了
# 脚本中有几个内置对象 client 表示当前客户端,response 表示响应结果

对于这个使用文档,我在官网没有找到对应的文档位置,但在 idea 本身提供了一些不错的使用示例,它的位置在 Tools/HTTP Client/Open HTTP Requests Collection

每发送一个请求后,你可以在历史记录中找到它,idea 会为你保存最近 50 条请求,保存的是编译后的请求,当你发送的请求的响应结果和实际不符时,你可以在这里找到问题的原因,它在项目的 .idea/httpRequests 文件夹中。

常用示例

配置环境信息

这也是它比较强大的一方面,使用一个 json 来配置所有环境,只要在请求脚本目录下就可以读到,遵循约定大于配置的原则,文件名 http-client.env.json 表示普通变量可放的地方 http-client.private.env.json 表示密码等私有变量配置的地方,配置大致如下。在运行请求脚本的时候,idea 会提示你要选哪个环境

{
  "local":{
    "baseUrl": "http://localhost:8083/",
    "checkCode": "http://localhost:8081/sanritools/company/token?env=dev",
  },
  "dev": {
    "baseUrl": "http://devhost:port/",
    "checkCode": "http://localhost:8081/sanritools/company/token?env=dev",
  },
  "sit": {
    "baseUrl": "http://sithost:port/",
    "checkCode": "http://localhost:8081/sanritools/company/token?env=sit",
  }
}

登录 token 示例

网上的示例基本上都是在说,用一个接口获取到 token ,然后保存到全局变量中,然后后面的接口就可以直接使用了,代码如下,但是本人试了无数次都没成功,再者,你们项目都没验证码的吗。

### 获取 token 值
GET {{checkCode}}
Content-Type: application/json

> {%
client.global.set("token", response.body.token);
%}

### 获取素材列表
POST {{baseUrl}}/media/list
Content-Type: application/json
Authorization: {{token}}

{
  "pageNo": 1,
  "pageSize": 10
}

上面这个是有问题的,返回值 response.body 其它是个 json 字符串并非 javascript 对象,需要解析一下,前面也说了,这里可以使用原生 javascript 脚本,所以 JSON.parse(response.body).token 才能正确获取到 token ,

第二个问题,我们现在这个 token 是存在 redis 的,所以我可以绕过验证码,另写一个接口去 redis 直接获取 token ,脚本最终如下

### 获取 token 值
GET {{checkCode}}
Content-Type: application/json

> {%
client.global.set("token", JSON.parse(response.body).token);
%}

### 获取素材列表
POST {{baseUrl}}/media/list
Content-Type: application/json
Authorization: {{token}}

{
  "pageNo": 1,
  "pageSize": 10
}

文件传输实践

前面说了,输入输出和 shell 中很像,所以这里输入一个文件使用 < 文件地址,随便找个 multipart/form-data 的数据格式查看一下,就知道文件怎么传了,其实在示例中也有,如下面脚本所示,它使用一个 boundary 的 key 绑定当前所要提交多个 part 的数据,每个 part 可以是不同的数据格式 ;

### 测试发送文件信息(文件元数据信息查询)
POST {{baseUrl}}/media/upload/fileMetaData
Content-Type: multipart/form-data; boundary=WebAppBoundary
Authorization: {{token}}

--WebAppBoundary
Content-Disposition: form-data; name="fileSize"
Content-Type: application/json

1024
--WebAppBoundary
Content-Disposition: form-data; name="md5"
Content-Type: application/json

sdafasdfasfd
--WebAppBoundary
Content-Disposition: form-data; name="partFile"; filename="zhongwenbuxin.avi"
Content-Type: application/octet-stream

< C:\Users\091795960\Videos/V0106_1024KB.avi
--WebAppBoundary--

对于返回信息乱码我没有碰到,也没有设置网上说的消息头和启动配置,返回消息是正常编码的;我只碰到了上传上去的文件名是乱码的,怎么设置都不生效,没找到解决办法,但自测的话,取个英文名也没关系,有哪位大神解决了可以告诉我一下。

关于其它断言的使用,和日志的使用可以找其它的博客,这里列一篇以供参考

https://www.cnblogs.com/zhixie/p/12059593.html

一点小推广

创作不易,希望可以支持下我的开源软件,及我的小工具,欢迎来 gitee 点星,fork ,提 bug 。

Excel 通用导入导出,支持 Excel 公式
博客地址:https://blog.csdn.net/sanri1993/article/details/100601578
gitee:https://gitee.com/sanri/sanri-excel-poi

使用模板代码 ,从数据库生成代码 ,及一些项目中经常可以用到的小工具
博客地址:https://blog.csdn.net/sanri1993/article/details/98664034
gitee:https://gitee.com/sanri/sanri-tools-maven

原文地址:https://www.cnblogs.com/sanri1993/p/12106128.html

时间: 2024-08-07 01:42:03

Idea rest client 使用(全) 真香的相关文章

全真教的武功

前些天看完了神雕侠侣,记得郭靖送杨过上终南山,想让杨过拜在丘真人门下,说全真教的武功是天下玄门正宗,要好好学习全真教的武功,将来为国为民做一番大事. 我看一下书架,发现有一本<丘处机集>,翻开一看,都是丘真人的武功. 于是迫切想买一本<王重阳集>,可是搜遍了各大电商,都缺货.幸好在网上可以看到扫描版的PDF文件,下载来一看,果然是重阳真人的武功. 全真教的武功,最核心的都在这两本书里面了.可惜里面只有口诀,没有修炼的招式.当年杨过的师父赵志敬,只教了杨过背诵口诀,没有教招式,结果杨

《信息系统项目管理师软考辅导——3年真题详解与全真模拟》主要创新点、关注点

<信息系统项目管理师软考辅导--3年真题详解与全真模拟>主要创新点.关注点 新增2014年5月.11月两份真题试卷的360°透彻解析: 更新2013年5月.11月真题试卷的解析: 紧扣考纲,基于历年真题分析,心血创作了一套全新的全真模拟卷: 与时俱进创作了部分前沿信息技术(例如,4G技术.云数据中心.大数据技术等).法规标准的新题,并更新至各份闯关密卷中: 细致地订正了前一版书籍在编写.校对.排版.印刷等环节中所存在的错漏之处(例如,部分语句表述不够准确到位,部分数据上标排版错位等问题),对待

《系统集成项目管理工程师软考辅导——3年真题详解与全真模拟》主要创新点、关注点

<系统集成项目管理工程师软考辅导--3年真题详解与全真模拟>主要创新点.关注点 新增2014年5月.11月两份真题试卷的360°透彻解析: 更新2013年5月.11月真题试卷的解析: 紧扣考纲,基于历年真题分析,心血创作了一套全新的全真模拟卷: 与时俱进创作了部分前沿信息技术(例如,4G技术.云数据中心.大数据技术等).法规标准的新题,并更新至各份闯关密卷中: 细致地订正了前一版书籍在编写.校对.排版.印刷等环节中所存在的错漏之处(例如,部分语句表述不够准确到位,部分数据上标排版错位等问题),

《网络工程师软考辅导——3年真题详解与全真模拟》主要创新点、关注点

"质量第一,开拓创新"是编写这套考试辅导用书的指导思想:出版精品是我们坚持不懈的奋斗目标! <网络工程师软考辅导--3年真题详解与全真模拟>主要创新点.关注点 新增2014年5月.11月两份真题试卷的360°透彻解析: 更新2013年5月.11月真题试卷的解析: 紧扣考纲,基于历年真题分析,心血创作了一套全新的全真模拟卷: 与时俱进创作了部分前沿信息技术(例如,4G技术.云数据中心.大数据技术等).法规标准的新题,并更新至各份闯关密卷中: 细致地订正了前一版书籍在编写.校对

阿里云性能监控 ARMS 全真3D拓扑揭秘

摘要: 微服务架构下,各类服务之间存在着错综复杂的依赖关系.一旦业务出现问题,追查问题源头就好比大海捞针,没有头绪.但业务不等人,此时,在最短的时间内定位问题根源是开发和运维人员对微服务监控产品的核心诉求. 传统的监控产品提供了表格(table).表单(form)和仪表盘(dashboard)三种展现形式,因其局限性,并无法完整和直观的提供监控详情,以快速定位问题. 微服务架构下,各类服务之间存在着错综复杂的依赖关系.一旦业务出现问题,追查问题源头就好比大海捞针,没有头绪.但业务不等人,此时,在

真香的flex弹性布局

如何实现一个左中右的布局 在flex出现之前 #box{ color: white; } #left{ float: left; width: 30%; background-color: red; } #right{ float: right; width: 20%; background-color: green; } #center{ background-color: blue; overflow:hidden; /* 去除浮动换成 margin: 0 20% 0 30%; 效果一样 *

PMP备考资料 | 2019/2020年PMP全真模拟题 、一模、二模、三模试题 | PMP章节练习题 | 附带详细答案解析 --- 项目整合管理 等(PMBOK&#174;第六版)

PMP备考资料 | 2019/2020年PMP全真模拟题 .一模.二模.三模试题 | PMP章节练习题 | 附带详细答案解析 --- 项目整合管理 等(PMBOK®第六版),获取:http://t.cn/A6POWgMw 原文地址:https://www.cnblogs.com/chunlynn/p/12252179.html

全真模拟 (1) day1

第一题: 题目大意: 给出N个数的m对关系(a,b)表示a大于b. 每个数至少为100,求这些书最小可能的和. 解题过程: 1.看到这题就想到之前USACO的一道题,那题是N头牛排序,然后给出m对关系(a,b)表示a排在b前面,然后问哪些牛的位置可以确定.只要对每个点2次dfs求出对于每头牛,有多少个比它大的,多少个比它小的,如果加起来是N-1,那么这头牛的位置就可以确定了. 这题也差不多,对于每个点,处理出比它小的那些点中最大可能是多少就可以. 2.具体做法是先做一次拓扑排序判断是否有环,排除

板刷bzoj计划(真香预警)

拒绝立 \(flag\) 总之寒假要以板刷 \(bzoj\) 第一页为目标,啥时候刷完不做硬性规定... bzoj1000 A+B Problem 太简单了,侮辱智商-- bzoj1001 bzoj1002 bzoj1003 bzoj1004 bzoj1005 bzoj1006 bzoj1007 bzoj1008 bzoj1009 bzoj1010 原文地址:https://www.cnblogs.com/lindalee/p/10299941.html