分享一下IDEA内置的HttpClient工具
admin 发布于:2025-11-28 10:58:42
阅读:loading
日常工作中应该会有涉及到使用一些外部的工具来进行接口联调,属于某功能开展实现的前置事项,记得以前使用过的一些软件有:SoapUI、Postman、浏览器插件等等,本期分享自我摸索使用的一款基于IDEA内置的HttpClient实现。直接在IDE中管理HTTP请求,在IntelliJ IDEA中创建、编辑和执行HTTP请求,这个功能在社区版中并没有,所以使用社区版的基本上可以节省时间了。
1.背景介绍
在我的认知里总是觉得软件版本的更新升级值得早点去体验、尝鲜,总是应该去接受它们更新带来的新特性,关于内置的HttpClient功能具体是哪个IDEA版本带来的我也并没有很精确的知晓,只是在很多时候右键创建新的文件时,发现有Http Request类型选项,也不知是什么时候新建了一个文件,然后一顿瞎摸索,大概知道它是做什么的了,所以有段时间的接口联调就使用的它,就有了本篇文章了。
如果恰好没有怎么使用和了解过内置的HttpClient,这里给出0基础的界面来有个清晰的认知,本文建立在IDEA的最最最新版本“IntelliJ IDEA 2025.2.5 (Ultimate Edition)”基础上,参考如下图所示:

(右键项目菜单)

(菜单功能组)
2.功能介绍
如果仔细看了一下上面的两个图,通过上面的图肯定有个一丢丢的认识,也就是说它可以将cURL、Postman的接口文件转换为HTTP的请求文件。另外,对于开发人员来讲IDEA的使用每天都是必不可缺的存在,相比较其它工具最具优势的就是可以把这个http文件的内容作为工作产出,以代码的形式提交至代码库。从网上找了一些免费使用的接口平台,作为本次实践案例,新建“接口测试.http”文件,文件默认会有一个GET请求的例子。更重要的是该文件的右侧有一些内置的Examples,详细参考如下图所示:

过一个简单的示例,其内部都有很多的知识点,有的功能也属实够复杂,本次我个人也不愿意去了解,大概知道就行,以网上能找到的一些免费使用API为例,分享我主要关注的一些知识细节。

(随机用户生成接口)
3.代码参考
### 随机用户生成接口
GET https://randomuser.me/api/
### 随机用户生成接口-URL参数
GET https://randomuser.me/api/?ts={{$timestamp}}&uuid={{$random.uuid}}
latitude=39.9&longitude=116.4¤t_weather=true
### 创建新帖子
POST https://jsonplaceholder.typicode.com/posts?ts={{$timestamp}}&uuid={{$random.uuid}}
Content-Type: application/json
{
"title": "chen",
"body": "dd",
"userId": 88
}
### 文件上传
POST https://127.0.0.1:8080/examples/upload
Content-Type: multipart/form-data; boundary=WebAppBoundary
--WebAppBoundary
Content-Disposition: form-data; name="file"; filename="upload.pdf"
<D:/app/hello.pdf
--WebAppBoundary--
### hello超时时间
# @connection-timeout 3600
# timeout 3600
POST https://127.0.0.1:8080/examples/hello
Content-Type: application/json
Authorization: Basic {{username}} {{website}}4.知识点
【已覆盖】
(1)上述代码演示了在一个http文件中可以同时包含多个接口的请求,### 表示其中的某一个接口名称;
(2)上述代码演示了GET/POST等类型接口,且包含了使用URL地址中传递参数、使用RequestParam传递参数、使用RequestBody传递JSON参数;
(3)上述代码演示了文件上传的实现(需要符合后端接口规范);
(4)上述代码演示了传递Content-Type、Authorization等多个请求头的传递;
(5)上述代码演示了传递动态uuid、随机时间戳等动态参数的传递;
(6)上述代码演示了传递@timeout参数控制请求的超时时间,默认请求的时间为1分钟;
(7)上述代码演示了接口请求执行的执行状态、响应结果、请求头、响应头等等详细信息;
(8)上述代码演示了使用多环境动态变量的方式,来引用变量;
(9)上图的响应结果已经存在在本地的离是文件中,会自动保存最近50次接口的请求执行结果;
【未覆盖】
(1)请求时的cookies传递,上述代码未涉及到;
(2)请求时使用“< {% %}”动态脚本来定义变量、调用方法、记录日志、断言,写一些动态脚本,上述代码未涉及到;
(3)一个http文件可以使用“import hello.http”来导入更多的http文件,通过run命令来执行对应的http文件中的方法;
(4)对于GraphQL、WebSocket、gRPC等类型的Request请求未涉及到;
点赞
欢迎来到陈冬冬的学习天地 | 学习与经验整理分享平台