IDEA的Postman(Http Client)

前言

idea推出了一个新功能http client,可以媲美postman,基本上实现了postman的绝大多数核心功能,更重要的是它的请求数据是纯文本的,非常方便,结合自动化脚本,很有想象空间,比如自动生成测试脚本,自动化测试等

1. 准备

要想使用这个功能需要2017.3以上的版本,但是老版本的这个功能很弱,所以建议升级到2019.3的版本可以享受全部新能力。
默认情况插件**Java EE: RESTful Web Services (JAX-RS)**是安装了并且启用了,如果没有可以到设置里面去安装并启动下

2.创建HTTP Client文件

2.1 直接创建文件

选择路径 -> 右键 -> 新建 -> Http Request
先择路径 -> 文件菜单 -> 新建 -> Http Request

2.2 创建草稿文件

Ctrl/Command + Shift+ Alt+ Insert
选择Http Request

3. 语法

每个请求都是以文本是形式存储起来,http后缀的文本文件,一个文件里面可以存储多个请求。
它的语法格式跟http请求的内容很接近
请求方法, 请求url,换行加上header参数,如果有body体,空一行加上body体

Method Request-URI HTTP-Version
Header-field: Header-value

Request-Body

下面是一个示例

POST http://test.abc.com/user
accept: */*
Content-Type: application/json;charset=UTF-8

{"uid":"test1", "token":"122asseeeddd", "age":32}

3.1. 注释使用#或者//

3.2. 如果是get请求可以省略方法说明,直接写url

3.3. 一个文件中多个请求以###分割

3.4. body内容可以来自一个文件语法如下

    <./input.json

3.5. 请求也可以传文件,语法如下

POST http://example.com/api/upload HTTP/1.1
Content-Type: multipart/form-data; boundary=boundary

--boundary
Content-Disposition: form-data; name="first"; filename="input.txt"

// The 'input.txt' file will be uploaded
< ./input.txt

--boundary
Content-Disposition: form-data; name="second"; filename="input-second.txt"

// A temporary 'input-second.txt' file with the 'Text' content will be created and uploaded
Text
--boundary
Content-Disposition: form-data; name="third";

// The 'input.txt' file contents will be sent as plain text.
< ./input.txt --boundary--

3.6. @no-redirect注解:可以关闭重定向

// @no-redirect
example.com/status/301

3.7. @no-log注解:可以阻止请求记录到历史记录

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

3.8 @no-cookie-jar: 可以阻止保存cookies数据

// @no-cookie-jar
GET example.com/api

3.9 使用变量

它定义了3个变量

  • $uuid 唯一标识符(UUID-v4)
  • $timestamp 当前时间
  • $randomInt 0-1000的随机整数
GET http://localhost/api/get?id={{$uuid}}

4. 快速生成请求

4.1 打开请求文件,点击Add Request菜单

从这里可以快速添加GET请求和POST请求的模板

4.2 Convert from cURL

这个功能可以将浏览器网络请求生成的curl命令直接导入,注意如果命令里面带–compressed后缀,需要将此后缀去掉再导入

4.3 Live Template

系统默认预置了几个基本的命令,可以快速生成GET和POST请求,这个跟Add Reqeust是对应的,可以修改他们。
还可以补充新的,注意如果新增要选择可用的文件为Http Request

4.4 Examples

选择Examples,从里面选择合适的复制粘贴过来

5.环境变量

在同目录下新建一个http-client.env.json (or rest-client.env.json)文件
就是一个配置文件,语法很简单,如下是示例

{
    "development": {
        "host": "localhost",
        "id-value": 12345,
        "username": "",
        "password": "",
        "my-var": "my-dev-value"
    },

    "production": {
        "host": "example.com",
        "id-value": 6789,
        "username": "",
        "password": "",
        "my-var": "my-prod-value"
    }
}

使用起来很简单

GET http://{{host}}/api/json/get?id={{id-value}}&key={{unresolved_var}}
Authorization: Basic {{username}} {{password}}
Content-Type: application/json

{
"key": {{my-var}}
}

运行请求的时候会让你选环境的,选了环境就会用对应的变量替换请求里面的占位符。还有个http-client.private.env.json,语法用法一样,这个文件是用来存一些敏感信息,把它加到.gitignore就不会到代码库里面了,感觉用途不大。

6. 处理响应

这个算高级功能了,可以写一段javascript(JavaScript ECMAScript 5.1)脚本来处理接口返回的信息,语法如下

GET host/api/test

> {%
// Response handler script
...
%}

###
host/api/test

> scripts/my-script.js

处理响应的第一个用途是测试,要实现这个功能得益于Http Response Handler的两个对象:

6.1 client对象

这个对象保存了session信息,可以在js脚本里被修改,而且它还可以定义client.global变量,这个变量是全局的,可以像环境变量一样使用{{variable_name}}.
这个功能很强大可以实现自动登录读取cookie并设置全局变量。该对象会在IDEA关闭后失效。
它还有两个测试方法test, assert
详细语法参考:HTTP Client reference

POST https://httpbin.org/cookies

//Saving a cookie from the first Set-Cookie header
> {%
    client.global.set("my_cookie", response.headers.valuesOf("Set-Cookie")[0]);
%}

6.2 response对象

响应对象,包含content-type,status,response body等。
详细语法参考:HTTP Response reference

GET https://httpbin.org/status/200

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

7. 运行Http Request

7.1 直接在http文件里面点绿色三角形运行

直接执行会创建一个临时的run/debug配置,保存后可以快捷运行请求

7.2 创建run/debug configuration运行

在请求上点右键选择**[创建 ’http-request#1‘]**
如果有环境变量会让你设置运行的环境变量
创建完就可以run/debug下拉列表里面选中并快速运行请求了

7.3 查看请求响应

进入run窗口,选中对应的请求标签页,即可看到响应,可以选择查看格式:
XML,JSON,HTML

8. 其他功能

8.1 查看历史请求

Tool -> Http Client -> SHow Http Requests History

8.2 配置代理

既然是http请求,那自然是可以设置代理,这个功能它也是支持的。
Settings -> System Settings -> Apperance & Behavior -> HTTP Proxy

参考文档:

  1. https://www.jetbrains.com/help/idea/restful-webservices.html?keymap=primary_default_for_windows
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值