跳转到主要内容
HTTP 客户端运行写在 .http 和 .rest 文件里的请求,格式与 IntelliJ IDEA 的 HTTP 客户端相同。响应显示在 服务 工具窗口的 HTTP 客户端 标签页中。

创建请求文件

  • 工具 › 新建 HTTP 请求 会在 IDE 的草稿目录中创建草稿文件 requests.http(已存在时依次为 requests_2.http 等)。
  • 在项目工具窗口中,新建 › HTTP 请求 会在所选文件夹中创建 .http 文件。
  • 任何以 .http 或 .rest 结尾的文件都可以。

语法

变量

在 URL、请求头或请求体中写 {{name}}。变量按以下顺序查找:
  1. 文件变量:@name = value 行。对整个文件生效,后定义的覆盖先定义的。
  2. http-client.private.env.json 中所选环境。
  3. http-client.env.json 中所选环境。
  4. 私有文件中的 $shared,然后是公共文件中的 $shared。
变量可以引用其他变量。有未解析变量的请求不会发送,错误信息会列出缺少的变量名。用 < 插入的文件中的变量不会替换。 动态变量:

环境

环境写在 http-client.env.json 里,密钥等敏感信息写在 http-client.private.env.json 里(这个文件不要提交到版本库):
http-client.env.json
OpenIDEA 会从请求文件所在目录开始,逐级向上查找到项目根目录,每种文件取离得最近的那个,不同层级的文件不会合并。只使用字符串、数字和布尔值。 在编辑器工具栏的 运行环境: 中选择环境(无环境 或某个环境名),选择按文件记住。修改环境文件后点击 重新加载环境。

运行请求

也可以点击请求行旁边边栏中的运行图标。编辑器工具栏有 运行文件中的所有请求、停止 和 运行环境:。
  • “光标处的请求”是光标所在的请求块,光标不在请求块内时取上方最近的一个。
  • 未保存的修改也会一起发送。
  • 开始新的运行会取消正在进行的运行。
  • 运行全部 按顺序执行。某个请求无法准备(例如有未解析的变量)时停止;网络错误会被记录下来,然后继续下一个请求。

响应

服务工具窗口的 HTTP 客户端 标签页左侧按时间倒序列出历史请求,显示状态、方法、名称和耗时。选中某条后显示:
  • 状态码、HTTP 版本、总耗时(悬停可看收到响应头的时间)和大小。
  • 响应:响应体。JSON、XML 和 HTML 会自动格式化,可用 显示原始内容 / 显示格式化内容 切换。二进制响应只显示类型和大小。超过 16 MiB 的响应体会被截断。
  • 标头:响应头。
  • 请求:实际发出的请求(已替换变量)。
工具栏有 停止请求、重新加载历史记录 和 清除历史记录。每个项目最多保留最近 100 条记录。

连接行为

  • 支持 HTTP/1.1 和 HTTP/2,自动解码 gzip、deflate 和 brotli。
  • TLS 证书按系统信任库校验。
  • 自动跟随重定向。
  • 请求之间不保留 Cookie。
  • 连接超时为 30 秒,没有整体请求超时。
  • 代理使用 设置 › 外观与行为 › 系统设置 › HTTP 代理 中的配置。
HTTP 客户端没有单独的设置页面。

端点与 Spring

OpenIDEA 会为 Java 和 Kotlin 中的 Spring Web 端点(带 @RequestMapping、@GetMapping 等注解的 @RestController / @Controller 类)建立索引:
  • 每个映射方法和控制器旁边都有边栏图标。在 HTTP 客户端中生成请求 和 为控制器生成请求(也在编辑器右键菜单和意图操作中)会把请求追加到草稿文件 generated-requests.http 并打开它。
  • 生成的请求使用 http://localhost:<server.port> 加上 application.properties 或 application.yml 中的上下文路径(端口默认 8080)。路径变量变成 {{var}},并按 @RequestBody 类型填好 JSON 骨架。
  • 随处搜索中有 端点 标签页。
  • 在 .http 文件中,方法后面的 URL 补全会提示已知端点。
插件可以提供其他框架的端点,这些端点旁会有 在 HTTP 客户端中打开 边栏图标。

暂不支持

  • JavaScript 响应处理脚本(> {% ... %}、> handler.js)和请求前脚本。处理脚本行能被识别,但会跳过。
  • 用 >> / >>! 保存响应,以及 <> 引用之前的响应(会跳过)。
  • 在 .http 文件中发送 WebSocket、gRPC 和 GraphQL 请求。GraphQL 在 .graphql 文件中有单独的支持。
  • 按请求配置 SSL、客户端证书、关闭重定向和 Cookie 存储。
  • 与 cURL 互相转换。