x-cmd pkg | hurl - 强力的 HTTP 请求测试工具,让 API 测试更加简洁和高效
目录
- 简介
- 快速上手
- 安装 hurl
- 发送 HTTP 请求
- Hurl 文件格式
- 功能特点
- 竞品和相关项目
- 进一步探索
简介
hurl
是 [github.com/Orange-OpenSource] 用 Rust 开发的 HTTP 请求处理和测试工具,专注于简化 HTTP 请求的创建、执行以及自动化测试流程,能以简单的纯文本格式定义的 HTTP 请求,特别适用于测试和调试 HTTP 服务。
hurl 这个名字是对 curl
的致敬。该项目在底层采用 libcurl,而上层设计则专注于 HTTP 领域的应用。此外,hurl 在 curl
的基础上主要拓展了两个功能:链接多个请求(Chain several requests)、测试 HTTP 响应(Test HTTP responses)。
快速上手
安装 hurl
eval "$(curl https://get.x-cmd.com)" # 安装 x-cmd
x env use hurl # 使用 x-cmd 安装 hurl
发送 HTTP 请求
-
从 stdin 读取 HTTP 请求。
echo GET http://httpbin.org/get | hurl
-
从指定文件或目录中读取 HTTP 请求。
hurl
支持在同一个文件中定义多个 HTTP 请求,且在以目录为目标时,hurl
将递归搜索扩展名为.hurl
的文件。echo GET http://httpbin.org/get > test.hurl hurl test.hurl # hurl <file> hurl ./ # hurl <dir>
-
使用测试模式,如执行当前目录下所有
.hurl
文件的 HTTP 请求并统计结果。hurl --test *.hurl
Hurl 文件格式
hurl 考虑到了 HTTP 请求的绝大部分场景,在有限的篇幅中笔者无法一一道来,只能简要说明部分内容:
-
.hurl
文件是一份条目(entry)列表,每个条目包含请求(request)和响应(response)两部分内容,其中请求部分是必需的,而响应部分是可选内容。 -
请求(request):指一个 HTTP 请求,包含处理请求方法(method)、URL、标头(headers)、请求配置(如查询字符串、表单参数、cookies 等)和正文(body),其中请求方法和 URL 是必需的。更详细的说明请参考hurl 官方提供的图例。
-
捕获响应(Capturing Response):从 HTTP 响应中提取或存储所需的数据,并注入到后续的请求中。这对于在一个请求中使用来自另一个请求数据的场景非常有用。结构如下:
# 提取或存储数据 [Captures] <variable>: <query># 在另一个请求中使用上述提取的数据 {{variable}}
-
断言(Asserts):用于测试 HTTP 响应的各种属性。它可以是隐式的(例如版本、状态、标头),也可以是 [Asserts]部分 中显式标识的。结构如下:
GET https://api/example.org/cats HTTP 200 Content-Type: application/json; charset=utf-8 # 隐式断言 [Asserts] # 显示断言 bytes count == 120 header "Content-Type" contains "utf-8" jsonpath "$.cats" count == 49 jsonpath "$.cats[0].name" == "Felix" jsonpath "$.cats[0].lives" == 9
功能特点
- 文件格式简单易懂:hurl 提供的格式简单易懂,方便维护,既可用于测试和调试 HTTP 服务,也可以作为文档非技术人员阅读或编写。
- 支持捕获响应(Capturing Response):支持从 HTTP 响应中提取或存储所需的数据,并注入到后续的请求中。
- 内置响应断言(Asserting Response):提供一系列断言(assertion)功能,允许你定义期望的 HTTP 响应状态码、头信息以及响应体内容,从而自动化地验证 HTTP 请求的响应。
竞品和相关项目
- curl:一款非常流行且功能强大的命令行工具,用于从命令行处理 HTTP、HTTPS 等多种协议的请求,支持文件传输、身份认证、代理等,适用于自动化脚本、调试 API、下载文件等多种场景。
- httpie:用 Python 实现的命令行 HTTP 客户端,专注于简化与 HTTP/HTTPS 服务的交互,设计更加直观和友好,特别适合开发人员、系统管理员和测试人员使用。
- Postman: Postman 是一款图形化的 API 测试工具,提供了丰富的功能管理 HTTP 请求。Postman 主要面提供了可视化的界面和协作功能。
进一步探索
- hurl 源代码 - hurl 项目的源代码托管在 GitHub,你可以在这里找到最新版本的 hurl 和参与社区贡献。
- hurl 官方文档 - 学习和使用 hurl 的官方网站,提供了 hurl 的文档、教程和社区资源。
更多内容请查阅 : pkg/hurl
转载请标明原文链接 :https://www.x-cmd.com/pkg/hurl
关注微信官方公众号 : oh my x
获取开源软件和 x-cmd 最新用法