Hurl工具使用指南:HTTP请求测试与运行利器
hurl Hurl, run and test HTTP requests with plain text. 项目地址: https://gitcode.com/gh_mirrors/hu/hurl
什么是Hurl
Hurl是一款命令行工具,用于运行和测试以简单纯文本格式定义的HTTP请求。它能够实现请求链式调用、捕获响应值以及对响应头和响应体进行查询评估。Hurl功能强大且用途广泛,既可用于获取数据,也可用于测试HTTP会话,包括HTML内容、REST/SOAP/GraphQL API,以及任何基于XML/JSON的API。
基本使用方式
Hurl的基本使用语法非常简单:
hurl [选项] [文件...]
如果未指定输入文件,Hurl会从标准输入读取内容:
echo GET http://httpbin.org/get | hurl
Hurl支持处理单个文件或整个目录。当输入为目录时,Hurl会递归查找所有扩展名为.hurl的文件。
Hurl文件格式详解
Hurl文件由一个或多个HTTP请求组成,格式简洁明了:
GET http://example.org/endpoint1
GET http://example.org/endpoint2
值捕获功能
Hurl的一个强大特性是能够从HTTP响应中捕获值,并在后续请求中重用。这在处理安全令牌等场景时特别有用:
GET https://example.org
HTTP 200
# 从HTML正文中捕获安全令牌值
[Captures]
security_token: xpath "normalize-space(//meta[@name='_security_token']/@content)"
# 执行登录操作
POST https://example.org/login?user=toto&password=1234
X-SECURITY-TOKEN: {{security_token}}
断言机制
Hurl文件中的HTTP响应定义可用于进行断言。响应部分至少包含对HTTP状态码的断言:
GET http://example.org
HTTP 301
还可以包含对响应头的断言:
GET http://example.org
HTTP 301
Location: http://www.example.org
通过组合查询和谓词,可以包含显式断言:
GET http://example.org
HTTP 301
[Asserts]
xpath "string(//title)" == "301 Moved"
借助断言功能,Hurl可以作为一个测试工具来运行各种场景。
核心功能选项
Hurl提供了丰富的选项来满足不同场景的需求,其中许多选项与curl工具保持相同的语义。
连接与超时控制
--connect-timeout
:设置连接超时时间--max-time
:设置请求/响应的最大处理时间--retry
:设置最大重试次数--retry-interval
:设置重试间隔时间
安全与认证
--aws-sigv4
:生成AWS SigV4签名认证头--cert
:指定客户端证书文件--key
:指定私钥文件--insecure
:允许不安全的SSL连接--user
:添加基本认证头
输出控制
--output
:将输出写入文件而非标准输出--test
:激活测试模式--json
:以JSON格式输出结果--no-output
:抑制输出
网络设置
--proxy
:使用指定网络中间件--noproxy
:指定不使用网络中间件的主机列表
调试与日志
--verbose
:开启详细输出--very-verbose
:开启更详细的输出--interactive
:在请求间暂停(类似断点)
环境变量配置
Hurl支持通过环境变量进行配置,这些变量只能使用小写形式:
http_proxy
:设置HTTP网络中间件https_proxy
:设置HTTPS网络中间件all_proxy
:设置通用网络中间件no_proxy
:设置不使用网络中间件的主机列表HURL_name
:定义模板变量NO_COLOR
:禁用彩色输出
实际应用场景
Hurl特别适合以下场景:
- API测试:对REST、SOAP或GraphQL API进行自动化测试
- Web抓取:通过链式请求获取网页内容
- 安全测试:验证安全防护等机制
- 回归测试:确保API行为符合预期
- 性能测试:结合重试和超时选项进行简单性能验证
总结
Hurl作为一个轻量级但功能强大的HTTP工具,结合了请求执行和测试验证的双重能力。其简洁的文本格式使得测试用例易于编写和维护,而丰富的选项则满足了各种复杂场景的需求。无论是开发过程中的API调试,还是持续集成中的自动化测试,Hurl都能提供高效可靠的解决方案。
通过掌握Hurl的核心功能和选项,开发者可以构建出灵活、可靠的HTTP测试流程,显著提升API开发和测试的效率。
hurl Hurl, run and test HTTP requests with plain text. 项目地址: https://gitcode.com/gh_mirrors/hu/hurl
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考