WebStorm 2025.2 Help

探索 HTTP 请求语法

本节介绍 HTTP 请求的格式。 有关发送 HTTP 请求和查看 HTTP 响应的详细信息,请参阅 HTTP 客户端

要在 WebStorm 代码编辑器中编写 HTTP 请求,请使用以下通用语法:

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

在 HTTP 请求中使用注释

  • 在请求中,使用 //# 开头的任意行将其作为注释行。

    // A basic request GET http://example.com/a/

为 HTTP 请求设置名称

为了便于在 运行/调试配置在任意位置搜索运行任意内容 中快速找到请求,您可以为其命名。

  • 在请求上方的 #### @name# @name = 旁输入名称。

    输入 HTTP 请求名称

如果请求没有名称,WebStorm 将使用其在请求文件中的位置(例如 #1 )作为请求名称。 如果请求文件中包含多个同名请求,WebStorm 会将每个名称附加上请求的位置编号。 这将使每个请求名称唯一,从而使您可以轻松在 服务 工具窗口、运行/调试配置等中找到所需请求。

“在任意位置搜索”中的 HTTP 请求

对 GET 请求使用简写形式

  • 对于 GET 请求,您可以省略请求方法,只指定 URI。

    // A basic request https://example.com/a/

在一个文件中组合多个请求

  1. 在请求下方输入 ### 分隔符以标记其结束。

    // A basic request https://example.com/a/ ###
  2. 在分隔符下方编写另一个请求。

    // A basic request https://example.com/a/ ### // A second request using the GET method https://example.com:8080/api/html/get?id=123&value=content

将较长的请求拆分为多行

  • 缩进除第一行以外的所有查询字符串行。

    // Using line breaks with indent GET http://example.com:8080 /api /html /get ?id=123 &value=content
  • 如果由于查询字符串导致 URL 过长,您可以使用专属上下文操作将每个查询参数放入新行。 将光标置于查询字符串部分,按下 Alt+Enter显示上下文操作 )并选择 将查询形参放在单独的行中

    GET https://example.com:8080/api/get/html?firstname=John&lastname=Doe&planet=Tatooine&town=Freetown
    GET https://example.com:8080/api/get/html? firstname=John& lastname=Doe& planet=Tatooine& town=Freetown
  • 类似地,您可以使用 Content-Type: application/x-www-form-urlencoded 格式化请求中的正文内容。 将光标置于正文,按下 Alt+Enter显示上下文操作 ),然后选择 将form-urlencoded 形参放在单独的行中

    POST https://ijhttp-examples.jetbrains.com/post Content-Type: application/x-www-form-urlencoded key1=value1&key2=value2&key3=value3&key4=value4&key5=value5
    POST https://ijhttp-examples.jetbrains.com/post Content-Type: application/x-www-form-urlencoded key1 = value1 & key2 = value2 & key3 = value3 & key4 = value4 & key5 = value5

    要配置 x-www-form-urlencoded 正文的换行方式,请使用 设置 | 编辑器 | 代码样式 | HTTP 请求 | 换行和大括号 | Form-urlencoded 形参换行。 要配置 = 前后的空格以及 & 前的空格,请使用 设置 | 编辑器 | 代码样式 | HTTP 请求 | 空格

通过身份验证访问 Web 服务

  • 根据所访问的 Web 服务,提供 basicdigest Authorization 标头。

    // Basic authentication GET http://example.com Authorization: Basic username password ### // Digest authentication GET http://example.com Authorization: Digest username password

提供请求消息正文

在请求中,以空行开头作为请求正文的起始,并执行以下操作之一:

  • 直接输入请求正文:

    // The request body is provided in place POST https://example.com:8080/api/html/post HTTP/1.1 Content-Type: application/json Cookie: key=first-value { "key" : "value", "list": [1, 2, 3] }

    如果将请求的 Content-Type 头字段设置为 WebStorm 所支持的语言 之一,则相应的语言片段将 自动注入 到 HTTP 请求正文中。 如果未指定 Content-Type ,您可以手动注入语言片段。

  • 要从文件读取请求正文,请输入 < 符号并紧跟文件路径。

    // The request body is read from a file POST https://example.com:8080/api/html/post Content-Type: application/json < ./input.json

使用 multipart/form-data 内容类型

  • 将请求的 Content-Type 设置为 multipart/form-data。 要将文件作为 multipart/form-data 消息的一部分发送,请在 Content-Disposition 标头中包含 filename 参数。

    POST https://example.com/api/upload HTTP/1.1 Content-Type: multipart/form-data; boundary=boundary --boundary Content-Disposition: form-data; name="first"; filename="input.txt" // The 'input.txt' file will be uploaded < ./input.txt --boundary Content-Disposition: form-data; name="second"; filename="input-second.txt" // A temporary 'input-second.txt' file with the 'Text' content will be created and uploaded Text --boundary Content-Disposition: form-data; name="third"; // The 'input.txt' file contents will be sent as plain text. < ./input.txt --boundary--

禁用自动跟随重定向

当 HTTP 请求被重定向(收到 3xx 状态码)时,将返回重定向页面的响应。 在 服务 工具窗口中,您可以查看重定向页面的响应以及请求过程中发生的所有重定向。

您可能希望禁用自动跟随重定向功能。 在此情况下,将返回实际的重定向响应头(例如 301 或 302)。

  • 在请求之前添加带有 @no-redirect 标签的注释行。

    // @no-redirect example.com/status/301

如果您已有重定向请求,可点击 禁用 ,此按钮位于 服务 工具窗口中的 Redirections 列表旁边。 这将把 @no-redirect 标签添加到初始请求中。

带有重定向的 HTTP 响应

禁用将请求保存到请求历史记录

如有必要,您可以阻止请求保存到 请求历史记录 中。 如果请求包含某些敏感数据,而您不希望记录该请求,则此操作会非常有用。

  • 在请求之前,添加一行包含 @no-log 标签的注释行。

    // @no-log GET example.com/api

禁用将接收到的 Cookie 保存到 Cookie 容器

如有必要,您可以阻止接收到的 cookie 被保存 到 cookies jar 中。 这样可以避免手动从 http-client.cookies 文件中删除不需要的 cookie。

  • 在请求之前,添加一行包含 @no-cookie-jar 标签的注释行。

    // @no-cookie-jar GET example.com/api

禁用编码

默认情况下,HTTP Client 会将请求参数和请求体编码为 ASCII 格式。 例如,您的请求参数中的斜杠字符将被发送为 %2F。 您可以禁用编码并将请求按原样发送。

  • 在请求之前,添加一行包含 @no-auto-encoding 标签的注释行。

    使用该标签时,请求参数和请求体不会被编码:

    # @no-auto-encoding GET https://examples.com/api? name=@#$somebody& qwerty=%40%23%24

    最终的请求将保持不变:

    https://examples.com/api?name=@#$somebody&qwerty=%40%23%24

    未使用标签时,默认启用编码。

    ### Default behavior GET https://examples.com/api? name=@#$somebody& qwerty=%40%23%24

    在此请求中,参数将被编码:

    https://examples.com/api?name=%40%23%24somebody&qwerty=%40%23%24

自定义 HTTP 请求超时设置

HTTP Client 对与服务器建立连接的超时时间为 60 秒,对持续连接中等待新数据包的超时时间也为 60 秒。 您可以自定义这两个超时设置。

  • 要为已建立连接中的新数据包设置超时,在请求前添加一行包含 @timeout 标签的注释行。

    # @timeout 600 GET example.com/api
  • 要设置连接超时,在请求前添加一行包含 @connection-timeout 标签的注释行。

    // @connection-timeout 2 m GET example.com/api

默认情况下,超时值的单位为秒,但您可以在数值后添加明确的时间单位: ms 表示毫秒, s 表示秒, m 表示分钟,例如 100&#xa0;ms5 m

处理响应

您可以使用 JavaScript 处理响应。 在请求之后输入 > 字符,并指定 JavaScript 文件的路径和名称,或者将响应处理脚本代码包裹在 {% ... %} 中。

GET https://httpbin.org/get > /path/to/responseHandler.js
GET https://httpbin.org/get > {% client.global.set("my_cookie", response.headers.valuesOf("Set-Cookie")[0]); %}

如需了解详细信息,请参阅 HTTP 响应处理 API 参考

重定向响应

您可以将响应重定向到文件。 如果文件已存在,使用 >> 创建带后缀的新文件,使用 >>! 覆写该文件。 您可以指定绝对路径或相对于当前 HTTP 请求文件的路径。 您还可以在路径中使用变量,包括环境变量和以下预定义变量:

  • {{$projectRoot}} 指向项目根目录

  • {{$historyFolder}} 指向 .idea/httpRequests/

以下示例 HTTP 请求在 myFolder 中创建 myFile.json 并将响应重定向到该文件。 如果文件已存在,则创建 myFile-1.json

POST https://httpbin.org/post Content-Type: application/json { "id": 999, "value": "content" } >> myFolder/myFile.json

以下示例 HTTP 请求在 .idea/httpRequests/ 中创建 myFile.json 。 如果文件已存在,则会覆盖该文件。 它还使用位于项目根目录下的 handler.js 脚本来 处理响应

POST https://httpbin.org/post Content-Type: application/json { "id": 999, "value": "content" } > {{$projectRoot}}/handler.js >>! {{$historyFolder}}/myFile.json
最后修改日期: 2025年 9月 26日