
字节笔记本
2026年10月6日 · 约 8 分钟读完
不用装 Postman,IDEA 里就能发 HTTP 请求
写后端或联调接口时,很多人习惯性打开 Postman 或 Apifox,却忽略了 IntelliJ IDEA 里早已内置的 HTTP Client。它以 .http 文件的形式存在:请求写在编辑器里,结果看在编辑器里,还能进版本库与团队共享。这篇文章把它从入门到进阶的用法整理成一篇速查手册,示例都可直接复制运行。
一分钟上手
在项目里右键目录,选择 New > HTTP Request,创建一个 .http 文件。用 ### 分隔符可以在同一个文件里写多个请求:
### 获取用户列表
GET http://localhost:8080/api/users
### 创建新用户
POST http://localhost:8080/api/users
Content-Type: application/json
{
"name": "张三",
"email": "zhangsan@example.com"
}把光标放在某个请求上,按 Ctrl + Enter(Mac 用 Cmd + Enter)即可发送,右侧面板会显示状态码、响应头和响应体。整个流程不离开 IDE,也不用在工具之间来回复制粘贴。

环境变量:一套请求,多个环境
开发、测试、生产三套环境的地址和凭证各不相同,硬编码在请求里切换起来很痛苦。HTTP Client 的做法是把变量抽到 http-client.env.json:
{
"dev": {
"baseUrl": "http://localhost:8080",
"token": "dev-token"
},
"prod": {
"baseUrl": "https://api.example.com",
"token": "prod-token"
}
}请求文件里用双花括号引用:
GET {{baseUrl}}/api/users
Authorization: Bearer {{token}}发送前在编辑器右上角切换环境,所有请求自动套用对应配置,URL 和 token 都不用再手动改。

响应脚本:让接口自己证明自己
HTTP Client 支持在请求下方写 JavaScript 响应处理脚本,用 > {% %} 包裹,可以做断言、打日志,还能把响应存成变量供后续请求使用:
### 创建订单
POST {{baseUrl}}/api/orders
Content-Type: application/json
{ "productId": "12345", "quantity": 2 }
> {%
client.test("创建订单成功", function() {
client.assert(response.status === 201, "状态码应为 201");
client.global.set("orderId", response.body.orderId);
client.log("订单ID: " + response.body.orderId);
});
%}client.test 定义一个测试用例,client.assert 校验响应,不满足就标红;client.global.set 把 orderId 存进全局变量,紧接着就可以写:
### 查询刚才的订单
GET {{baseUrl}}/api/orders/{{orderId}}这就是接口编排的关键:注册、登录、拿 token、带 token 调业务接口,整条链路可以在一个文件里顺序执行。例如注册接口用 {{$random.alphabetic(8)}} 生成随机用户名,登录接口把返回的 token 存入 authToken,后续请求统一带上 Authorization: Bearer {{authToken}}。
动态变量与文件上传
造测试数据不用自己想值,内置动态变量直接生成:
POST {{baseUrl}}/api/products
Content-Type: application/json
{
"name": "商品{{$random.integer(1, 1000)}}",
"price": {{$random.float(10, 1000)}},
"sku": "SKU{{$random.alphanumeric(8)}}",
"createTime": "{{$timestamp}}"
}文件上传走 multipart 表单,< ./data/avatar.jpg 表示从本地文件读取内容:
POST {{baseUrl}}/api/users/1/avatar
Content-Type: multipart/form-data; boundary=WebAppBoundary
--WebAppBoundary
Content-Disposition: form-data; name="file"; filename="avatar.jpg"
Content-Type: image/jpeg
< ./data/avatar.jpg
--WebAppBoundary--文件组织与团队协作
请求一多,组织方式决定维护成本,推荐按业务模块拆目录:
api-tests/
├── auth/
│ └── login.http
├── users/
│ └── profile.http
├── orders/
│ └── create.http
├── http-client.env.json
└── http-client.private.env.json用 # @name 给请求命名,配合结构视图(Structure View)快速跳转;常用请求片段可以存成 Live Template;把一条 cURL 命令直接粘进 .http 文件,IDEA 会自动转换成请求格式。.http 文件纳入 Git 之后,团队成员拉下代码就得到一整套可运行的接口用例;如果要在持续集成里跑,HTTP Client 也提供了命令行方式执行请求文件。
安全上的三个注意点
- 密码、token、apiKey 一律放环境变量,不要明文写进请求体;
- 敏感凭证放 http-client.private.env.json,并把该文件加进 .gitignore,避免随代码提交到仓库;
- 需要走代理或遇到自签名证书时,在 IDEA 设置里配置代理与 SSL 证书,避免请求被拦或报证书错误。
小结
IDEA 内置 HTTP Client 覆盖了接口测试的主干场景:请求编写、多环境切换、断言验证、变量传递、文件上传、命令行执行。对日常联调来说,它的核心优势是请求即代码:和工程一起进版本库、一起评审、一起演进。下次要测接口时,不妨先在项目里建一个 .http 文件试试。



