IntelliJ IDEA 2025.1 Help

HTTP 客户端

通过 HTTP Client 插件,您可以直接在 IntelliJ IDEA code editor 中创建、编辑和执行 HTTP 请求。

示例 HTTP 请求

您需要编写并运行 HTTP 请求的两个主要用例:

  • 当您开发 RESTful 网络服务时,并希望确保其按预期工作、符合规范要求并正确响应。

  • 当您开发处理 RESTful 网络服务的应用程序时。 在这种情况下,在您开始开发之前,研究对服务的访问和所需的输入数据是很有帮助的。 在开发过程中,您也可以从应用程序外部调用此 web 服务。 这可能有助于在您的应用程序产生意外输出而在代码中未检测到逻辑错误,并且您怀疑瓶颈在于与 web service 交互时,定位错误。

HTTP 请求存储在 .http .rest 文件中,并用 HTTP 文件图标 图标标记。

对 HTTP 文件的支持包括以下功能:

如有必要,在开始之前,请在 HTTP 代理 页面的 设置 对话框中配置代理设置(Ctrl+Alt+S)。

创建 HTTP 请求文件

您可以在临时文件或 HTTP 请求 类型的物理文件中处理 HTTP 请求。 每个文件可以包含多个请求,并且您可以根据需要创建任意数量的文件。

草稿文件可用于在开发期间测试 HTTP 请求。 草稿文件不存储在项目中,因此 IntelliJ IDEA 可以修改它们并添加有关请求的额外信息。 当从草稿文件执行 HTTP 请求时,响应输出文件的链接会添加到请求下方以及 请求历史文件顶部。

创建 HTTP 请求 草稿文件

  • Ctrl+Alt+Shift+Insert 并选择 HTTP 请求

物理文件可以用于记录、测试和验证 HTTP 请求。 项目内存储了物理文件,IntelliJ IDEA 不会修改它们。 从物理文件执行 HTTP 请求时,该文件不会被修改。 已执行请求的信息及其响应输出文件的链接被添加到 请求历史文件的顶部。

创建一个物理 HTTP 请求文件

  • 文件 菜单中,指向 新建 ,然后点击 HTTP 请求

移动 HTTP 请求

您可以使用 Move 重构 F6 将 HTTP 请求从临时文件移至物理文件,也可以在不同的物理文件之间移动。

  1. 在编辑器中,将文本光标置于要移动的请求处,然后执行以下操作之一:

    • 从主菜单或上下文菜单中选择 重构 | 移动

    • Alt+Enter 并选择 移动HTTP 请求 意图操作

    • 按下 F6

  2. 在打开的 移动HTTP 请求 对话框中,执行以下操作:

    1. 路径 字段中,从列表中选择一个现有的 .http 文件,或点击 浏览按钮 以找到该文件。

      您也可以手动输入文件的完整路径。 如果您指定一个不存在的文件名称,将会自动创建一个具有提供的名称的新文件。

    2. 请求 列表中,选中您要移动的请求旁边的复选框。

编写 HTTP 请求

IntelliJ IDEA 使用 Editor 中的 HTTP 请求 格式,这提供了一种创建、执行和存储 HTTP 请求信息的简单方法。 您可以直接在 创建的 HTTP 请求 文件中输入它们,使用以下通用语法:

### Method Request-URI HTTP-Version Header-field: Header-value Request-Body

### 分隔符之后,您可以输入任何以 #// 开头的注释。

为了加快撰写 HTTP 请求,您可以:

  • 点击 工具 | HTTP 客户端 | 在HTTP 客户端中创建请求。 如果在编辑器中打开了请求文件,这将会向打开的文件添加请求模板。 否则,这将创建一个新的 .http 临时文件。

  • 点击 添加请求按钮 在请求编辑器面板的顶部。 在弹出菜单中,选择要添加的请求类型。

    添加 HTTP 请求

或者,使用 实时模板。 在编辑器中,您可以按 Ctrl+J 查看可用模板的列表。 例如, gtr 展开为一个简单的 GET 请求; mptr 展开为一个 multipart/form-data POST 请求。

展开发布模板

创建自定义 HTTP 方法

如果 Web 服务要求您使用自定义 HTTP 方法,您可以将这些方法添加到 IntelliJ IDEA 中,并在 HTTP 请求中使用它们。

  1. .http 文件中,以大写字母键入一个自定义方法。

  2. 当该方法被标记为未知时,请按 Alt+Enter (显示上下文操作) 并选择 添加自定义 HTTP 方法

添加自定义 HTTP 方法

IntelliJ IDEA 将现在识别它为有效的 HTTP 方法。 您可以在 IDE 设置中(Ctrl+Alt+S), 工具 | HTTP 客户端 | 自定义 HTTP 方法 找到所有自定义 HTTP 方法(并添加新方法)。

HTTP/2

从版本 2024.1 开始,IntelliJ IDEA 在 HTTP 请求中提供对 HTTP/2 的支持。 您可以在 URL 部分后指定 HTTP 版本,例如:

GET https://example.org HTTP/2

如果未指定版本,HTTP 客户端 会尝试对安全连接使用 HTTP/2(如果 HTTP/2 协商失败,将退回到 HTTP/1.1),对非安全连接使用 HTTP/1.1。

选择 HTTP 版本

  1. 在请求 URL 后面输入一个空格,然后按 Ctrl+Space 或开始输入 HTTP

  2. 从补全列表中选择一个建议值:

    • HTTP/1.1 强制使用 HTTP/1.1。

    • HTTP/2 启用 HTTP/2 的使用。

    • HTTP/2 (Prior Knowledge) 使用 HTTP/2 发送而不升级到 HTTP/1.1。 如果您知道服务器能够处理 HTTP/2 连接,请使用它。

    启用 HTTP/2

要了解 HTTP 客户端 功能,您可以探索 HTTP 请求集合 ,它是一个精选的组合请求。

从 HTTP 请求集合中打开请求

  1. 点击请求编辑面板顶部的 示例 快捷链接。

  2. 在弹出菜单中,选择您希望打开的 HTTP 请求 集合:

    打开 HTTP 请求集合弹出窗口

转换 cURL 请求

如果您正在处理 cURL 请求,您可以在 cURL 请求和 编辑器中的 HTTP 请求 格式之间进行转换。

将 cURL 转换为 HTTP 请求

  • 将 cURL 请求粘贴到 HTTP 请求文件中。 IntelliJ IDEA 将其转换为 HTTP 请求格式,并将原始 cURL 请求注释掉以供以后参考。

    粘贴时将 cURL 请求转换为 HTTP 请求
  • 或者,点击 将 cURL 转换为 HTTP 请求 在 HTTP 请求编辑器面板顶部并选择 将cURL 转换为 HTTP 请求

    将 cURL 转换为 HTTP 请求 对话框中,输入或粘贴您要转换的 cURL 请求。

    将 cURL 转换为 HTTP 请求的对话框

请考虑以下示例 cURL 请求:

curl 'https://httpbin.org/' -H 'Connection: keep-alive' -H 'Accept: text/html' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US,en;q=0.9,es;q=0.8'

IntelliJ IDEA 将把它转换为:

# curl 'http://httpbin.org/' -H 'Connection: keep-alive' -H 'Accept: text/html' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US,en;q=0.9,es;q=0.8' GET http://httpbin.org/ Connection: keep-alive Accept: text/html Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,es;q=0.8 ###

该转换器支持以下 cURL 选项:

选项

描述

-X, --request

请求要使用的方法。

-H, --header

请求中包含的请求头。

-u, --user

--basic

--digest

用户提交请求时需要提供的凭据和使用的授权方法。

-d, --data, --data-ascii

--data-binary

--data-raw

--data-urlencode

要在 POST 请求中发送的数据。

-F, --form

发送在 POST 请求中的 multipart/form-data 消息。

--url

要获取的 URL(主要在配置文件中指定 URL 时使用)。

-i, --include

定义是否将 HTTP 响应头包含在输出中。

-v, --verbose

启用详细操作模式。

-L, --location

允许在请求的页面已移至不同位置时重新发送请求。

将 HTTP 请求转换为 cURL

  1. 将文本光标放置在您想要转换为 cURL 格式的 HTTP 请求处。

  2. Alt+Enter 并选择 转换为cURL 并复制到剪贴板

    或者,您可以点击 HTTP 请求编辑面板顶部的 转换(C) 快捷链接并选择 将光标下的 HTTP 请求转换为 cURL 并复制

这将根据 HTTP 请求生成一个 cURL 请求,并将其复制到剪贴板。

导入 Postman 集合和环境

Postman 集合是一种将相关 HTTP 请求组合在一起的方法。 在 Postman 中,您可以导出集合以及 JSON 格式的变量。 通过 HTTP 客户端,您可以将这些文件导入 IntelliJ IDEA,以将它们转换为各自的 .http 和环境文件。

导入 Postman 集合到 HTTP 客户端

  1. 从 Postman 导出集合. 您还可以导出环境文件,以便在 IntelliJ IDEA 中使用它们。

  2. 将文件以以下其中一种方式导入 IntelliJ IDEA:

    • 如果导出的文件在您的项目中,右键点击它并选择 将集合转换为 .http 文件

    • 打开任何 .http 文件,点击工具栏中的 导入 HTTP 请求 ,然后选择 Postman 集合

    • 请按 Ctrl+Shift+A ,开始输入 Import from Postman Collection File ,并选择相应的操作。

  3. 如果您还想导入一个环境文件,请选择 附加环境 并指定该文件。 它将被转换为 HTTP 客户端 环境格式,并且该环境将为指定的 .http 文件选择。

  4. 在出现的窗口中,点击 转换

    从 Postman 窗口导入

使用上下文操作生成请求

如果您的代码字符串字面值或 JSON、YAML、TOML 和 Properties 文件中有以 httphttps 开头的 URL,您可以快速生成 HTTP 请求。

  1. 点击 URL 并按 Alt+Enter

  2. 在打开的上下文菜单中,点击 在HTTP 客户端中生成请求

    在 HTTP 客户端中生成请求

    这将在 generated-requests.http 临时文件中创建一个新的 GET HTTP 请求到指定的 URL。

从 OpenAPI 规范创建请求

处理 OpenAPI Specification 文件时,您可以创建到指定端点的 HTTP 请求。

创建一个 HTTP 请求到一个端点

  • 在 OpenAPI 规范文件中,点击端点定义旁编辑器高亮中的 在 HTTP 客户端中打开按钮

  • 或者,打开 视图 | 工具窗口 | 端点 ,右键点击一个端点,并选择 在 HTTP 客户端 中生成请求

IntelliJ IDEA 将创建一个新的 HTTP 请求,并将其保存在 generated-requests.http 临时文件 中。

如果您想快速向端点发送请求并且不想保存它,可以使用 HTTP 客户端 选项卡在 端点 工具窗口中。

IntelliJ IDEA 根据现有 OpenAPI 规范为请求 URL 和请求体(JSON 格式)提供自动补全。 这不仅适用于本地规范,也适用于远程规范(在 IDE 设置中添加它们以启用自动完成)。

主体完成

重命名终结点及其用法

使用 重命名重构来同时重命名定义的端点及其在 HTTP 请求中的用法。

  1. 请执行以下任一操作:

    • 在 OpenAPI 规范文件中,将文本光标放在您想要重命名的端点定义处。

    • 在 HTTP 请求文件中,将光标置于您想重命名的 URL 路径段。

  2. 从主菜单或上下文菜单中选择 重构 | 重命名 ,或按 Shift+F6

  3. 在打开的 重命名 对话框中,指定新端点的名称。

  4. 预览并应用更改。

IntelliJ IDEA 将重命名端点及其用法。

使用 响应处理程序 和 预请求处理脚本

借助响应处理程序脚本,您可以通过编程方式对接收到的 HTTP 响应做出反应。 通过使用这些脚本,您可以自动处理接收到的数据并根据您指定的条件进行验证。 响应处理脚本作为请求的一部分包含在 HTTP 请求文件中,并在接收到响应后立即执行。 要查看响应处理示例,请打开 带授权的请求带有测试和脚本的请求 请求集合

通过预请求脚本,您可以设置 HTTP 请求中使用的变量

插入响应处理程序脚本

您可以将响应处理程序脚本直接插入到请求中或通过引用外部文件进行插入。

  • 要将脚本就地插入,请在其前面加上 > 并将其括在 {% %} 内:

    GET host/api/test > {% // Response Handler Script ... %}
  • 要插入外部文件中的脚本,请在其前面加上 >

    GET host/api/test > scripts/my-script.js

如果响应处理程序脚本有任何输出(来自 client.log的错误或输出),会在您运行请求时显示在 响应处理程序 选项卡的 服务 工具窗口中。

插入预请求脚本

您可以直接在请求中插入预请求脚本或引用外部文件。

  • 要将脚本就地插入,请在其前面加上 < 并将其括在 {% %} 内:

    < {% request.variables.set("petName", "Bella") %} POST https://example.org/pets/{{petName}}
  • 要插入外部文件中的脚本,请在其前面加上 <

    < scripts/my-script.js POST https://example.org/pets/{{petName}}

如果预请求脚本有任何输出(错误或 client.log 的输出),当您运行请求时,它会显示在 预请求处理程序 选项卡的 服务 工具窗口中。

导入 JavaScript 代码

有时,您可能需要使用外部文件中的特定功能,例如变量或函数。 为此,在前置请求和响应处理器脚本中,您可以使用常规的 ES6 import 功能来访问本地 JavaScript 文件中定义的变量和函数。

  1. 从 JavaScript 文件中导出所需的值。 HTTP 客户端 支持以下格式的 导出 语句:

    export let name1, name2/*, … */; // also var export const name1 = 1, name2 = 2/*, … */; // also var, let export function functionName() { /* … */ } export { name1, /* …, */ nameN }; export { variable1 as name1, variable2 as name2, /* …, */ nameN }; export default expression; export default function functionName() { /* … */ } export default function () { /* … */ }
  2. 将所需的值导入到您的响应处理程序或预请求脚本中。 HTTP 客户端 支持以下格式的 import 语句:

    import defaultExport from "module-name"; import * as name from "module-name"; import { export1 } from "module-name"; import { export1 as alias1 } from "module-name"; import { export1, export2 } from "module-name"; import { export1, export2 as alias2, /* … */ } from "module-name"; import defaultExport, { export1, /* … */ } from "module-name"; import defaultExport, * as name from "module-name"; import "module-name"; // side effect import

响应处理程序脚本和预检请求脚本是用 JavaScript ECMAScript 2023 编写的,代码辅助和文档由捆绑的 HTTP Pre-Request and Response Handler 库处理。 对于就地脚本,这一功能会自动启用。 对于外部脚本,您需要手动启用。

为响应处理程序和预请求脚本启用 JavaScript 编码帮助

  1. Ctrl+Shift+A查找操作)。

  2. 键入 使用 JavaScript 库 ,点击相应的操作,在打开的上下文菜单中选择 HTTP Pre-Request and Response Handler

HTTP Response Handler 库公开了两个对象可用于编写响应处理程序脚本:

  • client 对象存储会话元数据,可以在脚本中修改。 client 状态会被保留,直到您关闭 IntelliJ IDEA。 每个保存在 client.global 中的 variable_name 变量对于后续的 HTTP 请求都可作为 {{variable_name}} 访问。

  • response 保存有关接收响应的信息:其内容类型、状态、响应主体等。

要在编辑器中打开 HTTP 响应处理程序 库,请将文本光标放在库对象上,然后按 Ctrl+B

响应处理程序脚本可以包含测试,这让您可以将 HTTP 客户端 作为测试框架使用。 创建测试时,调用 client.test(testName, function) 方法。 在测试中,您可以通过调用 client.assert(condition, message) 方法来断言一个条件,例如:

GET https://httpbin.org/status/200 > {% client.test("Request executed successfully", function() { client.assert(response.status === 200, "Response status is not 200"); }); %}

使用 Structure 工具窗口浏览 .http 文件

如果您的 .http 文件中有多个请求, 结构 工具窗口可以帮助您快速预览文件并进行导航。 工具窗口还显示请求部分,例如 标头、请求正文、预请求处理脚本 和 响应处理程序脚本。

  1. 打开 结构 工具窗口: 查看 | 工具窗口 | 结构

    或者按 Alt+7

  2. 结构 工具窗口中,点击 HTTP 方法或请求名称,或请求的任何部分。

HTTP 客户端 结构工具窗口

您还可以通过右键点击它并选择 运行按钮 从那里发送请求。

执行 HTTP 请求

执行单个请求

  1. 如果您打算测试自己的 Web 服务,请确保其已部署并运行。

  2. 如果您定义了 环境 ,请在请求编辑面板顶部的 运行方式 列表中选择一个环境。

  3. 在边距中,点击请求旁的 运行按钮

顺序执行多个请求

您可以一次性运行 .http 文件中的所有请求。 这在处理复杂场景时非常有用,例如从服务器请求特定数据,保存为 client.global变量,然后发送包含该数据的后续请求。

  1. 打开文件 .http

  2. 在编辑器面板的顶部,点击 (在文件中运行所有请求)。

当请求执行时,IntelliJ IDEA 会自动为其创建一个专用的临时 HTTP 请求 运行/调试配置。 如果需要,您可以 将其保存为永久运行/调试配置

在浏览器中打开请求

您可以在 Web 浏览器和预览 页面的 设置 对话框中指定的浏览器中打开 HTTP 请求(Ctrl+Alt+S)。

  • Alt+Enter 并选择 在Web 浏览器中打开 意图操作

处理 HTTP 请求运行/调试配置

当您 从编辑器执行 HTTP 请求时,IntelliJ IDEA 会自动创建一个包含该请求参数的临时运行/调试配置。 临时运行/调试配置与永久运行/调试配置的工作方式相同。 您可以使用 Run/Debug Configuration对话框更改其设置,并可选择将其保存为永久配置。

修改 HTTP 请求 运行/调试配置

  1. 请执行以下任一操作:

    • 在编辑器中,右键点击一个请求,然后在上下文菜单中选择 修改运行配置...

    • 或者,转到 运行 | 编辑配置 主菜单,并在 HTTP 请求 列表中选择所需的运行/调试配置。

  2. 更改所需的配置参数:

    • 环境 列表中,选择一个 环境 ,它将定义请求中使用的一组环境变量。

    • 文件 字段中,提供 HTTP 请求文件的路径。 您可以手动输入路径并在输入时使用路径补全 Ctrl+Space ,或点击 从磁盘打开 并在打开的对话框中选择所需的文件夹。

    • 如果您的请求文件包含多个请求,请在 请求(R) 列表中选择要执行的请求名称。

保存临时 HTTP 请求 运行/调试配置

请执行以下任一操作:

  • 运行/调试配置 选择器中,选择 保存 <configuration name>

  • 运行/调试配置 对话框中,选择配置并点击 保存按钮

使用运行/调试配置执行请求

请执行以下任一操作:

  • 运行/调试配置 选择器中,选择所需的运行配置。 然后点击 运行按钮 主工具栏或按 Shift+F10

  • Alt+Shift+F10 ,从列表中选择所需的运行配置,然后按 Enter

从其他 .http 文件导入 HTTP 请求

IntelliJ IDEA 允许您从其他 .http 文件中导入 HTTP 请求。 您可以:

点击 示例并选择 带有 Include 的请求 以获取您 IDE 中此功能的语法示例。

从另一个 .http 文件运行所有请求

  1. 在您的 .http 文件中,输入 运行 ,然后输入您想要包含的另一个 .http 的名称。 如果文件在同一目录中,请输入其名称。 否则,指定其路径。 例如:

    run ./myFolder/get-requests.http
  2. 点击 运行按钮 旁边的 运行 以发送此文件中的所有请求。

从另一个 .http 文件运行特定请求

  1. 在您的 .http 文件顶部,输入 import ,然后输入另一个包含必要请求的 .http 的名称。

  2. 请输入 运行 并指定您要运行的请求名称。

    您可以按 Ctrl+Space 查看导入文件中所有可用的请求。

    从另一个 .http 文件运行特定请求

覆盖从导入的 .http 文件中获取的变量

如果导入的 .http 文件包含变量,您可以为特定执行指定或更改其值。

  1. 请输 运行 并指定 .http 文件的名称或请求。

  2. 在请求或文件名之后,以 (@variable=value) 格式输入变量。 要指定多个变量,请用逗号分隔。 例如:

    import new-requests.http run #GET request with one var (@host=example.com) run #GET request with two vars (@host=example.com, @user=userName)

查看来自 Web 服务的响应

当您执行 HTTP 请求时,IntelliJ IDEA 会自动将响应保存到 .idea/httpRequests/ 目录下的一个单独文件中。 您可以查看最近存储的 50 个响应,并通过 请求历史 导航到相应的文件。 如果请求是从一个 scratch 文件执行的,响应输出的链接也会添加在原始请求下面:

HTTP 响应

查看收到的响应

  1. 切换到 服務 工具窗口 ,该窗口会在接收到响应后自动打开。

  2. 默认情况下,服务器响应会按照请求头中 content-type 字段指定的格式显示。 若要将响应转换为其他格式,请点击 响应视图设置 并选择 文本JSONXMLHTML 文件

    在 服務 工具窗口中的 HTTP response

如果响应包含二进制文件,则该文件也会保存在 .idea/httpRequests/ 目录下。 如果响应是图像、PDF 或 HTML 文件,您可以在 IDE 中直接预览。

预览图像 服务 工具窗口:

HTTP response 包含图像

服务 工具窗口预览 PDF 文件。 要禁用在 服务 工具窗口中显示 PDF 预览,请点击 响应视图设置 并清除 启用 PDF 预览内联 选项。

HTTP响应包含PDF

如果响应是一个 HTML 文件,您可以点击 显示预览 在编辑器标签中使用基于 JCEF 的浏览器预览它。

HTTP 响应包含 HTML

如果您有一个 响应处理程序脚本 ,作为这部分脚本执行的测试结果将显示在 测试 选项卡的 服务 工具窗口中。 您可以点击每个测试,以快速导航到相应响应处理脚本中的测试源代码。

服务工具窗口的 Tests 选项卡

如果您订阅了事件流,IntelliJ IDEA 会在 服务 工具窗口中显示事件。 在这里,您还可以查看客户端服务器连接的状态,并通过点击 停止 终止连接。 根据内容类型(text/event-streamapplication/x-ndjson ),响应将格式化为纯文本或换行分隔的 JSON。 您可以编写一个响应处理脚本来 处理事件流的每一行

服务器发送事件

重定向 流事件到文件目前不支持。

在编辑器中打开响应文件

  1. 将文本光标放在您要打开的响应链接处。

  2. 在主菜单中,前往 查看 | 跳转到来源 ,或按 Ctrl+BF4

或者,您可以 Ctrl+Click 响应行。

从 JSON 响应中使用 JSONPath 提取数据

HTTP 客户端 支持 JSONPath 查询,使您能够解析和提取接收到的 JSON 文档的数据。 要做到这一点,请在您的 响应处理程序脚本中使用以下功能:

jsonPath(ObjectToParse, JSONPathExpression)

请使用 jsonPath 实时模板 快速插入此函数。

  1. 在请求之后,在响应处理脚本部分,开始键入 > jsonPath

  2. Enter 展开实时模板并完成 JSONPath 表达式。

    例如,此表达式将检索并打印第一个元素内的 slides 数组的 title 字段的值,该数组是 slideshow 对象的一部分:

    GET https://examples.http-client.intellij.net/json > {% client.log(jsonPath(response.body, "$.slideshow.slides[0].title",)) %}

    响应处理程序 选项卡中预览所获取的值,位于 服务 工具窗口中。

使用 XPath 从 XML 响应中提取数据

HTTP 客户端 支持 XPath 表达式,允许您解析和提取接收到的 XML 文档中的数据。

  1. 在您的 响应处理程序脚本中,请使用以下函数:

    xpath(XMLToParse, XPathExpression)
  2. XMLToParse 输入要解析的 XML 内容(例如, response.body ),在 XPathExpression 输入您的 XPath 表达式。

例如:

GET https://examples.http-client.intellij.net/xml > {% client.log(xpath(response.body, '//slide[@type="all"][1]/title/text()')) %}

在临时文件中比较响应

当从临时文件执行请求时,响应输出文件的链接会添加到原始请求的下方。

  • 请执行以下任一操作:

    • 将文本光标放在响应文件链接处。 按 Alt+Enter 并选择 与 <response name> 比较 意图操作。

    • 点击 比较响应 图标并从列表中选择 与 <response name> 比较

      比较请求历史中的响应

在请求历史中比较响应

当从物理文件执行请求时,响应输出的链接会添加到 requests' history 中。

  1. 将文本光标放在响应文件链接处。 在主菜单中,进入 查看 | 跳转到来源 ,或者按 Ctrl+BF4 以在新的编辑器选项卡中打开此文件。

  2. 请前往 查看 | 比较 与 ,或按下 Ctrl+D。 IntelliJ IDEA 将提示您从 httpRequests 文件夹中打开一个响应文件。

  3. 请选择您希望用于比较当前文件的响应文件,然后点击 打开

这两个响应文件将在 差异查看器中打开,允许您比较它们的内容:

比较 HTTP 响应

查看请求历史

IntelliJ IDEA 自动将最近执行的 50 个请求保存到 http-requests-log.http 文件中,该文件存储在项目级的 .idea/httpRequests/ 目录下。 通过请求历史,您可以快速导航到特定响应并且 再次发出任何请求。 如果从请求历史中再次发出请求,其执行信息和响应输出链接将添加到请求历史文件的顶部。

打开请求历史

  • 点击 显示 HTTP 请求历史记录 在请求编辑器面板的顶部。

  • 从主菜单中选择 工具 | HTTP 客户端 | 显示HTTP 请求历史记录

将输出重定向到自定义文件或目录

  • HTTP 客户端 可以将输出重定向到自定义文件或目录。 它支持使用两个运算符进行强制重定向和软重定向:

    • >> 运算符总是会创建一个新文件,如果请求的文件名已经存在,则在文件名后添加一个 -n 后缀。

    • >>! 操作符会在文件已存在时重写文件。

管理 Cookie

通过响应收到的 cookies 会自动保存到 http-client.cookies 文件中,位于 .idea/httpRequests/ 目录下。 可以保存的 cookies 数量限制为 300。 一个 cookie 的 名称会自动包含在随后对匹配该 cookie 所指定的 路径的 URL 的每个请求中,前提是尚未到达 到期日期

如果您希望 Cookie 永不过期,您可以输入 -1 作为 日期 参数。 例如:

# domain path name value date .example.com / userId 0x4d2 -1
http-cookies 文件

如果您想在 HTTP 请求中设置自定义 cookies,您可以使用 Cookie 标头。 请输入您的 cookies 列表,格式为用分号分隔的一对 name=value ,例如:

GET http://localhost:80/api Cookie: theme=dark; country=France

gRPC 请求

HTTP 客户端 支持 gRPC 请求。 要让 HTTP 客户端将您的请求视为 gRPC 请求,请使用 GRPC 关键字开头。

基于 .proto 文件,IntelliJ IDEA 为 gRPC 提供了智能补全功能:包括所有已知的 gRPC 服务、特定服务器的单向和服务器流式方法,以及请求体中已接受消息的字段。 如果您在项目中没有 .proto 文件,如果服务器支持 gRPC 反射 ,代码补全功能仍然可用,它为 HTTP 客户端提供有关可访问服务的信息。

HTTP 客户端 支持 gRPC 请求

从 proto 文件生成 gRPC 请求

  • 在 proto 文件中,点击 gRPC在HTTP 客户端中生成请求 附近的 RPC 方法。

    从 PROTO 文件生成 gRPC 请求

从 Endpoints 工具窗口生成 gRPC 请求

就像对于 HTTP 请求一样,您也可以使用 端点 工具窗口生成 gRPC 请求。

  1. 打开 端点 工具窗口: 视图 | 工具窗口 | 端点。 如果在您的项目中定义了 gRPC 端点,您将会看到它们。

  2. 选择一个终结点。 这将在 HTTP 客户端 选项卡中生成一个示例请求。

  3. 完成请求并点击 提交请求。 您可能需要将默认地址和端口替换为您自己的值。 对于请求体,请使用基于 proto 文件中的数据结构的代码补全。

  4. HTTP 客户端 标签的下半部分预览响应。

HTTP 客户端 选项卡

发送 gRPC 元数据

  • 在您的 GRPC 请求下方,使用以下语法输入 gRPC 元数据: Metadata-key: Value

    例如:

    GRPC localhost:8080 X-Myhostname: Example.org

使用安全 gRPC

您可以发起通过服务器端 TLS 保护的连接。

  • 在地址前输入 grpcs ,例如:

    GRPC grpcs://ijhttp-examples.jetbrains.com/hello.HelloService/SayHello

WebSocket 请求

HTTP 客户端 支持 WebSocket 请求。 要使 HTTP 客户端 将您的请求视为 WebSocket 请求,请从 WEBSOCKET 关键字开始,后跟服务器地址。 请求具有以下结构:

WEBSOCKET ws://localhost:8080/websocket Content-Type: application/json // Used for content highlighting only // Request body, for example: { "message": "First message sent on connection" } === // message separator { "message": "Second message" // will be sent right after the previous one } === wait-for-server // keyword used to wait for the server response { "message": "Send this after the server response" }

要加快编写 WebSocket 请求,您可以:

  • 请点击 添加请求按钮 在编辑器面板顶部的 .http 文件,然后选择 WebSocket 请求

  • .http 文件中,键入 wsr 并按 Enter 以应用 WebSocket 实时模板。

发送多条消息

  • 请使用 === 分隔符发送多条消息:

    { "message": "First message sent on connection" } === // message separator { "message": "Second message" } === { "message": "Third message" }

在服务器响应后发送消息

  • 在消息之前,输入 === wait-for-server

    这将使 HTTP 客户端 在发送消息之前等待服务器响应。 您可以通过重复 === wait-for-server 行等待多个响应。 例如,将在 3 次服务器响应后发送以下消息:

    === wait-for-server === wait-for-server === wait-for-server { "message": "This messages is sent after 3 server responses" }

交互发送消息

一旦您建立了连接,您可以直接从 服务 工具窗口与您的服务器进行交互。 您可以发送消息并查看每条新消息的服务器响应。

  1. 服务 工具窗口中,选择一个已打开的连接。

  2. 在窗口的下方,在 发送到 WebSocket 的消息 下方,输入消息内容。

  3. 在其右侧,选择消息格式:纯文本、JSON、XML 或 HTML。

  4. Ctrl+Enter 发送请求。

在窗口的上部,您会看到服务器响应。

服务工具窗口

GraphQL

IntelliJ IDEA 提供在 HTTP 请求体中发送 GraphQL 操作的支持。 您可以通过 HTTP 或 WebSocket 发送它们。

编写包含 GraphQL 查询的 HTTP 请求

  1. .http 文件中,输入 GRAPHQL 关键字,后跟服务器地址。

  2. 在请求正文中,编写您的 GraphQL 操作(查询、变更或订阅),例如:

    ### HTTP request with GraphQL query GRAPHQL http://localhost:8080/graphql query { toDos { title, completed, author { username } } }

要加快使用 GraphQL 查询编写 HTTP 请求,您可以:

  • 请点击 添加请求按钮 在编辑器面板顶部的 .http 文件,然后选择 GraphQL 查询请求

  • .http 文件中,键入 gqlr 并按 Enter 应用 GraphQL 实时模板。

使用 GraphQL 变量

在 HTTP 请求主体中,您可以使用 GraphQL 变量来传递一些与查询字符串分开的动态数据。

  • 在 query 部分之后,输入一个 JSON 变量字典:

    query ($name: String!, $capital: String!) { country(name: $name, capital: $capital) { name capital } } { "name": "France", "capital": "Paris" }

    您也可以将 HTTP 客户端环境变量 用作 GraphQL 变量值。 例如,在这个 JSON 中, "{{Author}}" 是一个环境变量;它在运行时的值取决于您在发送请求时选择的环境:

    { "author": "{{Author}}" }

从 Spring 控制器创建 GraphQL 请求

如果您在 Spring 应用程序中使用 GraphQL,您可以使用专用的坑图标快速从控制器源代码创建 HTTP 请求。

  1. 在您的 Spring controller 代码中,点击 GraphQL 错误图标 注解旁边的 @QueryMapping@MutationMapping@SubscriptionMapping 注解。

  2. 在打开的上下文菜单中,选择 在HTTP 客户端中生成请求

从 Spring GraphqL 生成 HTTP 请求

这将向 GRAPHQL 文件添加一个新的 generated-requests.http 请求。

配置代理设置

  1. 设置 对话框(Ctrl+Alt+S )中,选择 系统设置 下的 外观与行为 ,然后选择 HTTP 代理

  2. 在打开的 HTTP Proxy对话框中,选择 手动代理配置 并指定以下内容:

    • 主机名端口号 字段中输入代理主机名和端口号。

    • 要启用授权,请选择 代理身份验证 复选框,并在相应字段中输入用户名和密码。

设置客户端 SSL/TLS 证书

如果 HTTP 服务器要求 SSL/TLS 认证以实现安全通信,您可能需要在发送 HTTPS 请求之前指定客户端证书。 在 HTTP 客户端中,您可以使用 私人环境文件设置客户端证书。

指定证书路径

  1. 在一个 .http 文件中,在 运行方式 列表中,选择 将环境添加到Private 文件…

  2. 在打开的 http-client.private.env.json 文件中,将 SSLConfiguration 对象添加到所需的环境中。 在 clientCertificate ,输入您的客户端证书路径。 如果证书密钥存储在单独的文件中,请在 clientCertificateKey 中输入其路径。 例如:

    { "dev": { "MyVar": "SomeValue", "SSLConfiguration": { "clientCertificate": "cert.pem", "clientCertificateKey": "MyFolder/key.pem" } } }

    或者,您可以将 clientCertificateclientCertificateKey 描述为对象,这样您可以指定证书格式以及路径。 例如:

    { "dev": { "SSLConfiguration": { "clientCertificate": { "path": "file.crt", "format": "PEM" }, "clientCertificateKey": { "path": "file.key", "format": "DER" } } } }

设置证书密码

如果您在生成客户端证书时使用了密码短语,则应将其提供给 HTTP 客户端。

  1. http-client.private.env.json 文件中,将 "hasCertificatePassphrase": true 添加到 SSLConfiguration 对象,例如:

    { "dev": { "SSLConfiguration": { "clientCertificate": "file.crt", "hasCertificatePassphrase": true } } }
  2. 点击 为证书密码短语设置值 ,或在将文本光标置于 hasCertificatePassphrase 时,按 Alt+Enter 并选择 设置'Certificate passphrase' 的值

  3. 在打开的窗口中,输入您的证书密码短语。

    HTTP 客户端安全值窗口

如果您现在不想输入密码,您可以省略第二步。 在这种情况下,IntelliJ IDEA 会在您执行 HTTPS 请求时要求您输入密码短语。

禁用证书验证

出于开发目的,您可能有一个带有自签名或过期证书的主机。 如果您信任此主机,您可以禁用其证书的验证。

  • http-client.private.env.json 文件中,将 verifyHostCertificate": false 添加到 SSLConfiguration 对象。 例如:

    { "sslTest": { "SSLConfiguration": { "verifyHostCertificate": false } } }

如果您在此环境中运行请求,IntelliJ IDEA 将不会验证主机证书。

最后修改日期: 2025年 4月 24日