目录
简介
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.hurlhurl 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/catsHTTP 200Content-Type: application/json; charset=utf-8 # 隐式断言[Asserts] # 显示断言bytes count == 120header "Content-Type" contains "utf-8"jsonpath "$.cats" count == 49jsonpath "$.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 最新用法
版权归原作者 x-cmd 所有, 如有侵权,请联系我们删除。