http client 是 intellij idea ultimate 内置功能,community 版不支持;ultimate 用户需检查 settings → tools → http client 中是否启用,新建 .http 文件后用 ctrl+enter 执行请求。

不需要额外安装插件,Ultimate 版本开箱即用;Community 版不支持,别白费劲去 Settings → Plugins 里搜 HTTP Client。
确认你的 IDEA 版本和功能可用性
HTTP Client 是 IntelliJ IDEA Ultimate 的内置功能,不是插件。Community 版本完全不包含该模块——即使你看到“HTTP Request”文件类型或误装了第三方插件,也无法执行请求或解析 .http 文件语法。
- 检查方式:打开
File → New → HTTP Request,能点开说明已就绪;若菜单灰掉或报错“No HTTP Client available”,基本就是 Community 版 - Ultimate 用户默认启用,无需手动开启;但首次使用建议检查
Settings → Tools → HTTP Client中是否勾选了 “Enable HTTP Client” - 2021.3+ 版本支持完整特性(含文件上传、环境变量、OAuth2),低于此版本可能缺失
multipart/form-data边界自动处理或{{$auth.token()}}语法
创建并运行第一个 .http 文件
直接新建物理文件比用草稿更可控,尤其涉及路径引用或团队协作时。
- 右键项目目录(推荐放在
src/test/resources/http/)→New → HTTP Request,命名为test.http - 写一个最简 GET 请求:
GET http://httpbin.org/get Accept: application/json
注意:URL 后必须换行,Header 和 body 之间必须空一行 - 光标停在请求内,按
Ctrl+Enter(Windows/Linux)或Cmd+Enter(macOS)执行;响应会以临时文件形式展开,不修改原.http文件 - 如果提示 “Connection refused” 或超时,先确认系统代理设置是否干扰:进入
Settings → Appearance & Behavior → System Settings → HTTP Proxy,临时设为 “No proxy” 排查
调试文件上传请求的关键写法
Spring Boot 的 @RequestParam("file") MultipartFile 接口对 Content-Type 和 boundary 格式极其敏感,手写 multipart 容易出错。
- 不要手动拼
------WebKitFormBoundary...边界字符串——IDEA 会自动识别Content-Type: multipart/form-data并生成合规 boundary - 正确写法是省略 boundary 声明,只写 header + 空行 + 表单字段:
POST http://localhost:8080/api/upload Content-Type: multipart/form-data --boundary Content-Disposition: form-data; name="file"; filename="sample.txt" Content-Type: text/plain
是关键:路径必须相对于 <code>.http文件所在目录,且前面必须有符号,否则 IDE 当作文本字面量发送- 如果后端报错 “Required request part 'file' is not present”,大概率是
filename缺失、name和后端@RequestParam值不一致,或文件路径不存在
环境变量与多环境切换的实际配置
硬编码 localhost:8080 会导致测试脚本无法跨环境复用,但乱配 http-client.env.json 又容易踩坑。
- 必须在项目根目录(即
.idea同级)创建.idea/http-client.env.json,内容格式严格:{ "dev": { "host": "localhost:8080", "token": "dev-token-abc123" }, "prod": { "host": "api.example.com", "token": "prod-token-xyz789" } } - 在
.http文件中用双大括号引用:POST http://{{host}}/api/upload,运行前点击右上角下拉框选dev或prod - 变量名不能含短横线(如
base-url会解析失败),只能是字母、数字、下划线;嵌套对象不支持,{{auth.token}}这种写法无效 - 环境切换后,所有已打开的
.http文件不会自动刷新变量值,需手动重跑请求或重启编辑器
真正容易被忽略的是:HTTP Client 对文件路径的解析完全依赖于 .http 文件自身位置,而不是运行配置或模块根路径;一旦挪动文件, 就全挂了——建议把测试脚本和测试文件(如 <code>test-files/)一起放进 src/test/resources/http/ 并加进 Git,避免路径漂移。











