# HTTP 客户端 CLI

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com.cn/help/idea/llms.txt).

除 IntelliJ IDEA 插件外，HTTP 客户端还可以用 [作一个 CLI 工具](https://www.jetbrains.com.cn/ijhttp/download)。 它允许您在终端中运行 HTTP 请求，而无需使用 IDE，或将 HTTP 请求测试包含在您的 CI 工作流中。 HTTP 客户端 CLI 不需要您拥有 旗舰版 许可证。

> **Tip:**
> 当前在 HTTP 客户端 CLI 中不支持 [SSL configuration](http-client-in-product-code-editor.html#ssl_certificate) 和 [OAuth 2.0 authorization](oauth-2-0-authorization.html)。 您可以在各自的任务中跟踪这些功能的进展： [IJPL-69643](https://youtrack.jetbrains.com/issue/IJPL-69643/HttpClient-add-certificate-support-in-CLIrunner) 和 [IJPL-69639](https://youtrack.jetbrains.com/issue/IJPL-69639/HTTP-Client-CLI-support-OAuth2-password-and-client-credentials-grant-types)。

Procedure: 安装 HTTP 客户端 CLI

您可以通过以下方式获取 HTTP 客户端 CLI：

* 要以 [Docker 镜像](https://hub.docker.com/r/jetbrains/intellij-http-client) 的形式获取 HTTP 客户端 CLI，请拉取镜像：

```SHELL
docker pull jetbrains/intellij-http-client

```

检查镜像中的版本：  `docker run --rm -i -t -v $PWD:/workdir jetbrains/intellij-http-client --version`

* 要获取 ZIP 存档， [从我们的网站下载](https://www.jetbrains.com.cn/ijhttp/download)或使用 cURL：

```SHELL
curl -f -L -o ijhttp.zip "https://jb.gg/ijhttp/latest"

```

> **Tip:**
> ZIP 发行版需要安装 JDK 25 或更高版本。

检查已安装的版本：  `./ijhttp --version`

* 在 macOS 上，您还可以使用 Homebrew 安装它：

```SHELL
brew install ijhttp

```

检查已安装的版本：  `ijhttp --version`

Procedure: 运行 HTTP 请求

1. [创建 .http 请求文件](http-client-in-product-code-editor.html#composing-http-requests)。 您的文件可以包含多个 HTTP、WebSocket 和 GraphQL 请求，如果您想一次运行所有请求。

2. 运行 HTTP 客户端 CLI：

在主机上:

将文件名传递给  `./ijhttp` 命令，例如：

`./ijhttp myrequest.http`

在 Docker 中:

使用  `.http`  文件运行容器：

`docker run --rm -i -t -v $PWD:/workdir jetbrains/intellij-http-client run.http`

此命令在主机上的当前工作目录（  `$PWD` ）与容器中的  `workdir`  目录之间创建一个绑定挂载。

> **Tip:**
> 请注意，此命令中需要  `/workdir` ：所有  `.http`  文件将在容器中的此目录内运行。

命令输出包含已发送的请求信息、测试状态以及 [environment variables](#environment-variables)。

![运行 HTTP 客户端 CLI](https://resources.jetbrains.com.cn/help/img/idea/2026.3/http_client_cli.animated.gif)

Procedure: 更改日志级别

默认情况下，HTTP 客户端 CLI 只输出已发送请求和环境变量的信息。 您可以使用  `-L`  选项更改日志级别。

* 请使用  `-L HEADERS`  记录请求和响应头信息。

* 或者使用  `-L VERBOSE`  来记录请求和响应头部及主体的信息。

Procedure: 将响应保存到文件中

* 如果您想将 HTTP 响应保存到单独的文件中，请在您的  `.http` 文件中添加  `>>` 或者  `>>!` （另请参见 [重定向响应](exploring-http-syntax.html#response-redirect)）。 例如：

```HTTP_REQUEST_FULL
GET https://example.org/get

>> myFolder/myFile.json

```

* 如果您想从 HTTP 客户端 CLI 保存输出，请使用标准终端命令，例如  `>` 。 例如：

`./ijhttp rest-api.http > yourFile.txt`

保存在 HTTP 客户端 CLI 输出中的详细级别取决于指定的 [日志级别](#change-log-level)。

Procedure: 解决 Docker 中的 localhost

如果您的主机上运行着服务器，并且在 Docker 容器中运行 HTTP 请求，您可能需要将  `本地主机`  解析为主机的 localhost。

* 请使用  `-D`  选项，例如：

`docker run --rm -i -t -v $PWD:/workdir jetbrains/intellij-http-client -D run.http`

> **Tip:**
> 如果您使用 Docker-for-Linux 20.10.0+，您还应该在命令中添加  `--add-host host.docker.internal:host-gateway` 选项：
>
>
>
>
> ```
> docker run --rm -i -t -v $PWD:/workdir --add-host host.docker.internal:host-gateway jetbrains/intellij-http-client -D run.http
> ```

这样，发送给  `本地主机`  的请求将会被发送到您主机的 localhost。

## 环境变量

就像在 IntelliJ IDEA HTTP 客户端中一样，您可以在您的 HTTP 请求中使用 [环境变量](http-client-variables.html)。 您可以使用来自 HTTP 环境文件的变量，或者直接在 CLI 命令中传递变量值。

Procedure: 使用公共环境变量

* 使用  `--env-file`  选项指定变量文件的路径，并使用  `--env`  指定环境名称。 例如：

`./ijhttp --env-file http-client.env.json --env dev rest-api.http`

* 或者，在  `-V`  选项中传递变量值。 如果要传递多个变量，请重复使用  `-V`  选项：

`ijhttp -V host=localhost:8080 -V planet=tatooine rest-api.http`

可以将这两个选项组合使用：

```
./ijhttp --env-file http-client.env.json --env dev -V host=localhost:8080 rest-api.http

```

Procedure: 使用私有环境变量

* 使用  `--private-env-file`  选项指定变量文件的路径，并使用  `--env`  指定环境名称。 例如：

`./ijhttp --private-env-file http-client.private.env.json --env dev rest-api.http`

* 您还可以在  `-P`  选项中传递变量值。 如果要传递多个变量，请重复使用  `-P`  选项：

`ijhttp -P password=mypassword123 -P user=johndoe rest-api.http`

可以将这两个选项组合使用：

```
./ijhttp --private-env-file http-client.private.env.json --env dev -P password=mypassword123 rest-api.http

```

## 测试请求

正如在 HTTP 客户端 插件中，您的  `.http`  文件中可能包含用 JavaScript ES6 编写的 [响应处理脚本](exploring-http-syntax.html#response-handling)。 您可以使用它通过 [client.assert](http-client-reference.html)方法测试 HTTP 请求。

Procedure: 使用 响应处理程序脚本

* 在您的  `.http`  文件中，从请求中跳过一行，并将您的响应处理程序脚本包含在  `> {% ... %}`  中。 例如：

```JAVASCRIPT
GET https://httpbin.org/get

> {%
    client.test("Test status code", function() {
        client.assert(response.status === 200, "Response status is not 200");
    });
%}

```

> **Note:**
> 使用 IntelliJ IDEA 获取响应处理程序脚本的语法高亮和代码完成功能。

您还可以包含来自单独文件的测试。 通往文件的路径可以是绝对路径或相对于您的  `.http` 文件的相对路径：

```
GET https://httpbin.org/get

> /path/to/responseHandler.js

```

Procedure: 以 JUnit XML 格式保存测试报告

HTTP 客户端 能够以 JUnit XML 格式提供输出。

* 将  `--report`  参数添加到  `ijhttp`  命令，例如：

`./ijhttp test.http --report`

HTTP 客户端 CLI 会将报告保存在  `report.xml`  文件中，位于  `reports`  目录下。

