HTTP 客户端 CLI
最后修改时间:2023 年 7 月 13 日除了 IntelliJ IDEA 插件之外,HTTP 客户端也可用作 CLI 工具。它允许您在没有 IDE 的情况下从终端运行 HTTP 请求,或者在 CI 工作流程中包含 HTTP 请求测试。HTTP 客户端 CLI 不要求您拥有 Ultimate 许可证。
安装 HTTP 客户端 CLI
您可以以Docker 映像或 ZIP 存档的形式获取 HTTP 客户端 CLI 。
要将 HTTP 客户端 CLI 作为 Docker 映像获取,请拉取该映像:
docker pull jetbrains/intellij-http-client
要获取 ZIP 存档,请使用 cURL:
curl -f -L -o ijhttp.zip "https://jb.gg/ijhttp/latest"
提示
ZIP 发行版需要安装 JDK 17。
下载 HTTP 客户端 CLI 后,您可以运行./ijhttp
以获取可用参数的列表。运行./ijhttp --version
以检查 HTTP 客户端 CLI 的版本。
运行 HTTP 请求
创建一个 .http 请求文件。如果您想一次运行所有请求,您的文件可以包含多个 HTTP、WebSocket 和 GraphQL 请求。
提示
HTTP 客户端 CLI 版本 2023.3 中将添加对 gRPC 请求的支持。
运行 HTTP 客户端 CLI:
在主机上在 Docker 中将文件名传递给
./ijhttp
命令,例如:./ijhttp myrequest.http
使用以下文件运行容器
.http
:docker run --rm -i -t -v $PWD:/workdir jetbrains/intellij-http-client run.http
此命令在主机 (
$PWD
) 上的当前工作目录和workdir
容器中的目录之间创建绑定安装。提示
Note that
/workdir
is required in this command: All.http
files will be run inside this directory in the container.
命令输出包含有关已发送的请求、测试状态和环境变量的信息。
更改日志级别
默认情况下,HTTP 客户端 CLI 只输出已发送的请求和环境变量的信息。您可以使用该-L
选项更改日志级别。
用于
-L HEADERS
记录有关请求和响应标头的信息。或者用于
-L VERBOSE
记录有关请求和响应标头和正文的信息。
将响应保存到文件
在 Docker 中解析 localhost
如果您的主机上运行着服务器,并且在 Docker 容器中运行 HTTP 请求,则可能需要解析localhost
为主机的本地主机。
使用该
-D
选项,例如:docker run --rm -i -t -v $PWD:/workdir jetbrains/intellij-http-client -D run.http
提示
--add-host host.docker.internal:host-gateway
如果您使用 Docker-for-Linux 20.10.0+,您还应该在命令中添加该选项: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 环境文件中的变量,也可以直接在 CLI 命令中传递变量值。
使用公共环境变量
使用该
--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
使用私有环境变量
使用该
--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 编写的响应处理程序脚本。您可以使用它通过client.assert方法测试 HTTP 请求。
使用响应处理程序脚本
在您的
.http
文件中,从请求中跳过一行并编写包含在> {% ... %}
. 例如:GET https://httpbin.org/get > {% client.test("Test status code", function() { client.assert(response.status === 200, "Response status is not 200"); }); %}
笔记
使用 IntelliJ IDEA 获取响应处理程序脚本的语法突出显示和完成。
您还可以包含来自单独文件的测试。文件的路径可以是绝对路径,也可以是相对于.http
文件的相对路径:
GET https://httpbin.org/get
> /path/to/responseHandler.js
以 JUnit XML 格式保存测试报告
HTTP 客户端可以提供 JUnit XML 格式的输出。
将
--report
参数添加到ijhttp
命令中,例如:./ijhttp test.http --report
HTTP 客户端 CLI 将报告保存在reports目录下的report.xml文件中。
感谢您的反馈意见!