ByteNoteByteNote
不用装 Postman,IDEA 里就能发 HTTP 请求
字

字节笔记本

2026年10月6日 · 约 8 分钟读完

不用装 Postman,IDEA 里就能发 HTTP 请求

API中转
¥120

写后端或联调接口时,很多人习惯性打开 Postman 或 Apifox,却忽略了 IntelliJ IDEA 里早已内置的 HTTP Client。它以 .http 文件的形式存在:请求写在编辑器里,结果看在编辑器里,还能进版本库与团队共享。这篇文章把它从入门到进阶的用法整理成一篇速查手册,示例都可直接复制运行。

一分钟上手

在项目里右键目录,选择 New > HTTP Request,创建一个 .http 文件。用 ### 分隔符可以在同一个文件里写多个请求:

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,也不用在工具之间来回复制粘贴。

一个请求在 IDEA HTTP Client 里的完整生命周期

环境变量:一套请求,多个环境

开发、测试、生产三套环境的地址和凭证各不相同,硬编码在请求里切换起来很痛苦。HTTP Client 的做法是把变量抽到 http-client.env.json:

json
{
  "dev": {
    "baseUrl": "http://localhost:8080",
    "token": "dev-token"
  },
  "prod": {
    "baseUrl": "https://api.example.com",
    "token": "prod-token"
  }
}

请求文件里用双花括号引用:

http
GET {{baseUrl}}/api/users
Authorization: Bearer {{token}}

发送前在编辑器右上角切换环境,所有请求自动套用对应配置,URL 和 token 都不用再手动改。

HTTP Client 的两份环境变量文件如何协作

响应脚本:让接口自己证明自己

HTTP Client 支持在请求下方写 JavaScript 响应处理脚本,用 > {% %} 包裹,可以做断言、打日志,还能把响应存成变量供后续请求使用:

http
### 创建订单
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 存进全局变量,紧接着就可以写:

http
### 查询刚才的订单
GET {{baseUrl}}/api/orders/{{orderId}}

这就是接口编排的关键:注册、登录、拿 token、带 token 调业务接口,整条链路可以在一个文件里顺序执行。例如注册接口用 {{$random.alphabetic(8)}} 生成随机用户名,登录接口把返回的 token 存入 authToken,后续请求统一带上 Authorization: Bearer {{authToken}}。

动态变量与文件上传

造测试数据不用自己想值,内置动态变量直接生成:

http
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 表示从本地文件读取内容:

http
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--

文件组织与团队协作

请求一多,组织方式决定维护成本,推荐按业务模块拆目录:

text
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 也提供了命令行方式执行请求文件。

安全上的三个注意点

  1. 密码、token、apiKey 一律放环境变量,不要明文写进请求体;
  2. 敏感凭证放 http-client.private.env.json,并把该文件加进 .gitignore,避免随代码提交到仓库;
  3. 需要走代理或遇到自签名证书时,在 IDEA 设置里配置代理与 SSL 证书,避免请求被拦或报证书错误。

小结

IDEA 内置 HTTP Client 覆盖了接口测试的主干场景:请求编写、多环境切换、断言验证、变量传递、文件上传、命令行执行。对日常联调来说,它的核心优势是请求即代码:和工程一起进版本库、一起评审、一起演进。下次要测接口时,不妨先在项目里建一个 .http 文件试试。

相关文章

分享: