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
<think>嗯,用户想了解IntelliJ IDEAPostman的集成或比较。首先,我需要明确用户的具体需求。可能他们是在开发过程中需要在IDE和API测试工具之间切换,想要更高效的工作流程。接下来,我得考虑IDEAPostman各自的优缺点,以及它们如何集成或者替代对方。 首先,IDEA有内置的HTTP客户端,可以替代部分Postman的功能。这个功能支持REST API测试,并且能直接保存请求配置在项目,方便团队共享。但Postman作为专业的API工具,界面更友好,功能更全面,比如自动化测试、Mock服务器等。用户可能需要在两者之间权衡,或者寻找集成的方法。 然后,关于集成方式,用户可能想知道有没有插件可以直接在IDEA使用Postman。我记得有Postman Interceptor或者一些第三方插件,比如“REST Client”,但需要确认插件的可用性和安装方法。此外,Postman的代码生成功能可以导出为curl命令,再导入到IDEAHTTP客户端,这可能是一个可行的集成步骤。 另外,用户可能关心两者在协作、环境变量管理、文档生成等方面的比较。比如,Postman的团队协作功能更强大,而IDEAHTTP客户端更适合与项目代码紧密结合。环境变量方面,Postman提供了详细的管理界面,而IDEA则需要手动配置或者使用项目中的配置文件。 还要注意引用相关的资料。比如引用[1]提到IDEA的插件工具,可能和API测试相关。但其他引用如Spring Boot、MongoDB、版本控制库可能不相关,需要忽略。同时,用户可能遇到CodeGPT的token限制问题,但这可能不需要处理,除非集成涉及到AI功能。 最后,用户可能需要具体的步骤指导,比如如何安装插件,如何导入导出请求,或者如何配置环境变量。需要确保回答结构清晰,分点说明集成方法、比较优缺点,以及相关问题,帮助用户全面了解。</think>### IntelliJ IDEAPostman 的集成与比较 #### 1. IDEA 内置的 HTTP Client 替代 Postman IntelliJ IDEA 提供了**内置的 RESTful API 测试工具**,可直接替代部分 Postman 功能: - 支持编写 HTTP 请求脚本(`.http`文件),语法示例: ```http GET https://api.example.com/users Accept: application/json ``` - 支持环境变量、动态参数和响应断言 - 请求配置可保存至项目,便于团队协作[^1] #### 2. 插件集成方案 通过安装第三方插件实现深度集成: - **官方插件**:Postman Interceptor(需配合桌面版Postman使用) - **替代插件**:安装`REST Client`插件(支持直接导入Postman集合) 安装路径:`File -> Settings -> Plugins -> 搜索"REST Client"` #### 3. 工作流对比 | 功能 | IntelliJ HTTP Client | Postman | |---------------------|--------------------------------|-------------------------| | 脚本版本控制 | 直接存储在项目目录中 | 需手动导出/导入集合 | | 环境变量管理 | 通过`http-client.env.json`配置 | 图形化界面管理 | | 自动化测试 | 需结合测试框架 | 内置测试脚本生成器 | | 文档生成 | 需手动编写 | 自动生成API文档 | | 协作功能 | 通过VCS共享脚本[^3] | 专业团队协作空间 | #### 4. 典型集成步骤 1. 在Postman中导出集合为`cURL`格式 2. 在IDEA中创建`.http`文件 3. 粘贴cURL命令并自动转换为IDEA格式: ```http # 转换前 curl -X GET "https://api.example.com/data" -H "Authorization: Bearer token" # 转换后 GET https://api.example.com/data Authorization: Bearer token ``` #### 5. 调试技巧 - 在IDEA中直接调试API响应: ```http GET https://api.example.com/users/1 > {% client.test("Status code is 200", function() { client.assert(response.status === 200, "Response status is not 200"); }); %} ``` - 使用`http-client.private.env.json`存储敏感凭证(自动被.gitignore)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值