IDEA --从postman到IDEA REST Client

目录

前言

从postman到IDEA REST Client

IDEA REST Client控制台

1、激活IDEA自带RestClient插件

2、安装 RESTful Web Services 插件

历史请求记录

构建HTTP请求脚本 

简单语法 :

响应处理程序脚本

断言

存储变量

请求结果记录

环境变量

定义环境变量

具体使用

文件结构​

report_api.http 请求文件:

http-client.env.json 普通变量 :

http-client.private.env.json 私有变量 :

结语


前言

接口调试是每个软件开发从业者必不可少的一项技能,一个项目的的完成,可能接口测试调试的时间比真正开发写代码的时间还要多,几乎是每个开发的日常工作项。

所谓工欲善其事必先利其器,在没有尝到IDEA REST真香之前,postman(chrome的一款插件)确实是一个非常不错的选择,具有完备的REST Client功能和请求历史记录功能。

但是当使用了IDEA REST之后,postman就可以丢了,因为,IDEA REST Client具有postman的所有功能,而且还有postman没有的功能,继续往下看。

从postman到IDEA REST Client

真香定律的原因有如下几个:

  1. 首先postman的所有功能IDEA REST Client都具备了,如REST Client控制台和历史请求记录
  2. 其次如果能够在一个生产工具里完成开发和调试的事情,干嘛要切换到另一个工具呢
  3. 然后IDEA REST Client还支持环境配置区分的功能,以及接口响应断言和脚本化处理的能力
  4. IDEA REST Client的请求配置可以用文件配置描述,所以可以跟随项目和项目成员共享

IDEA REST Client控制台

1、激活IDEA自带RestClient插件

打开RestClient 窗口,Rest Client激活以后可以通过Tools–>Test Restful Web Service 打开窗口

2、安装 RESTful Web Services 插件

如果你的IDEA没有自带RestClient插件,没关系,通过 Ctrl + Alt + s ==> Plugins ==> 搜索 RESTful Web Services(IDEA 2019.2版本后集成了RESTful Web Services 插件)

打开RestClient 窗口有变,Tools ==> HTTP Client ==> Test RESTFUL Web Service

这样就完成一一个请求,如果在控制台中点击了 Convert request to the new format就会以 .http 文件的方式保存到 Scratches and Consoles 下的 Scratches 文件夹中,如图:

历史请求记录

IntelliJ IDEA自动将最近执行的50个请求保存到http-requests-log.http 文件中,该文件存储在项目的.idea / httpRequests / 目录下。使用请求历史记录,您可以快速导航到特定响应并再次发出请求。文件内容大如下图所示,再次发出请求只要点击那个运行按钮即可。

如果从请求历史记录再次发出请求,则其执行信息和响应输出的链接将添加到请求历史记录文件的顶部。

构建HTTP请求脚本 

上面的历史记录就是一个完整的IDEA REST Client请求脚本,如果你是从控制台触发的,那么可以直接复制历史请求记录的文件放到项目里作为HTTP请求的脚本,给其他成员共享,如果不是,也可以直接新建一个.http或者.rest结尾的文件,IDEA会自动识别为HTTP请求脚本。

下面介绍怎么创建 .http 文件发送请求文件

可以通过右键 new ==> HTTP Request 指定位置创建一个 RESTful 请求文件(如下图),或者通过快捷键 Ctrl + Shift + Alt + Insert 选择 HTTP Request 创建一个临时文件文件保存到上面的 Scratches 文件夹中。

简单语法 :

1、注释 : // 或者 #

2、使用三个#号分割 request 请求 : ###

3、web 的 basic 或者 digest 认证

// Basic authentication
GET http://example.com
Authorization: Basic username password

###

// Digest authentication
GET http://example.com
Authorization: Digest username password

4、普通请求体

POST http://example.com:8080/api/html/post
Content-Type: application/json 

{ "key" : "value", "list": [1, 2, 3] }

5、不添加执行日志

// @no-log
GET example.com/api

响应处理程序脚本

将脚本插入请求中

以 > 开头,然后把脚本包装在 {%%} 里面。

断言

GET https://example.com/status/200

> {%
    client.test("Request executed successfully", function() {
        client.assert(response.status === 200, "Response status is not 200");
    });
%}

脚本日志

client.log("this is log");

存储变量

通过 client.global.set 存储全局变量,通过 client.global.get 获取变量。可以通过 client 对象在内存中存储数据,可以保留到 idea 关闭之前。

除了 get 获取值外,还可以通过变量获取值,如图:

那么在一处存储了变量, 就可以在其他地方调用了,非常适合处理 token,就有点像浏览器登录了…

请求结果记录

请求结果一般存储在该项目的 .idea 目录下的 httpRequests 目录里面的 http-requests-log.http 文件中,如下 :

查看返回结果 json 通过 Ctrl + b 或者 ctrl + 鼠标左键进入返回的 json 详情,途中有误 emm…

环境变量

编写HTTP请求时,可以使用环境变量来参数化其元素 。例如,可以使用{{host}}占位符代替在请求中显式提供主机名 。然后,在项目中定义一组环境变量,其中包含所需的主机定义。执行请求时,可以在定义的环境之间进行选择。

变量可以保存以下请求组件的值:

  1. 请求ip,端口和路径
  2. 查询参数或值
  3. 请求头的值
  4. 在外部文件为请求体提供任意值

定义环境变量

环境变量在环境文件中定义的,文件定义在与 .http 文件相同目录下,文件可以是 : rest-client.env.json 或者 http-client.env.json, rest-client.private.env.json 或者 http-client.private.env.json。

  • rest-client.env.json 或者 http-client.env.json 表示这个文件是包含普通的变量,并把里面的变量分发到项目中。
  • rest-client.private.env.json 或者 http-client.private.env.json 表示该文件是一个私人的文件,可能包括密码,令牌,证书和其他敏感信息。默认情况下,此文件被添加到 VCS 忽略文件列表中。在 http-client.private.env.json 文件中指定的变量的值将覆盖环境文件中的值。

具体使用

文件结构

report_api.http 请求文件:

POST {{host}}/api/employee-user/logIn
Content-Type: application/json

{
  "username": "{{username}}",
  "password": "{{password}}"
}

###

GET {{host}}/api/reportApplet/list?state=-1&type=3
Accept: */*
Cache-Control: no-cache
token: {{token}}
Content-Type: application/json

###

# 修改状态
POST {{host}}/api/operateProcessGroup/state
Accept: */*
Cache-Control: no-cache
token: {{token}}
Content-Type: application/json

{
  "id":10,
  "state": "{{enable_state}}"
}

###

POST {{host}}/api/operateProcessGroup/modify
Accept: */*
Cache-Control: no-cache
token: {{token}}
Content-Type: application/json

{
  "id":10,
  "name":{{unresolved-var}},
  "state":0
}

http-client.env.json 普通变量 :

{
  "dev": {
    "host": "http://127.0.0.1:8080",
    "token": "c10fb622c769d74200c71b46ad74afaa",
    "enable_state": "1"
  },

  "line": {
    "host": "https://www.xxx.com",
    "token": "8ad4f5f92728bf43ee807444f9d78876",
    "enable_state": "1"
  }
}

http-client.private.env.json 私有变量 :

{
  "dev": {
    "username": "test",
    "password": "test"
  },

  "line": {
    "username": "admin",
    "password": "admin"
  }
}

运行时就可以选择 dev 和 line 两种方式

这里的 dev 和 line 对应前面 http-client.env.json 中定义的 dev 和 line。

注意: 在最后一个请求中,由于 {{unresolved-var}}未在环境文件中定义变量{{unresolved-var}},因此在种情况下,IntelliJ IDEA均会将文本作为请求的一部分发送。

结语

postman有口皆碑,确实是一个非常不错的必备工具。但是,IDEA REST Client也真的很不错,值得尝试一下,和第三方做接口对接时,项目里必备一个rest-http.http接口请求文件,满足自己的同时也成方便了他人。

发布了81 篇原创文章 · 获赞 93 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/minkeyto/article/details/104793157