简介
hurl 是用 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 请求
1.从 stdin 读取 HTTP 请求。
echo GET http://httpbin.org/get | hurl
2.从指定文件或目录中读取 HTTP 请求。hurl 支持在同一个文件中定义多个 HTTP 请求,且在以目录为目标时,hurl 将递归搜索扩展名为 .hurl 的文件。
echo GET http://httpbin.org/get > test.hurl
hurl test.hurl # hurl
hurl ./ # hurl
使用测试模式,如执行当前目录下所有 .hurl 文件的 HTTP 请求并统计结果。
hurl --test *.hurl
Hurl 文件格式
hurl 考虑到了 HTTP 请求的绝大部分场景,在有限的篇幅中笔者无法一一道来,只能简要说明部分内容:
1..hurl 文件是一份条目(entry)列表,每个条目包含请求(request)和响应(response)两部分内容,其中请求部分是必需的,而响应部分是可选内容。
2.请求(request):指一个 HTTP 请求,包含处理请求方法(method)、URL、标头(headers)、请求配置(如查询字符串、表单参数、cookies 等)和正文(body),其中请求方法和 URL 是必需的。更详细的说明请参考hurl 官方提供的图例。
3.捕获响应(Capturing Response):从 HTTP 响应中提取或存储所需的数据,并注入到后续的请求中。这对于在一个请求中使用来自另一个请求数据的场景非常有用。结构如下:
# 提取或存储数据
[Captures]
:
# 在另一个请求中使用上述提取的数据
{{variable}}
4.断言(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 源代码 - GitHub - Orange-OpenSource/hurl: Hurl, run and test HTTP requests with plain text.
- hurl 官方文档 - https://hurl.dev/docs/manual.html
更多内容请查阅 : hurl | x-cmd pkg | 用于运行以简单纯文本格式定义的 HTTP 请求
转载请标明原文链接 :
https://www.x-cmd.com/pkg/hurl
本文暂时没有评论,来添加一个吧(●'◡'●)