当前位置: 首页 > news >正文

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 请求

  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 <file>
    hurl ./                                         # hurl <dir>
    
  3. 使用测试模式,如执行当前目录下所有 .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>: <query># 在另一个请求中使用上述提取的数据
    {{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
    

功能特点

  1. 文件格式简单易懂:hurl 提供的格式简单易懂,方便维护,既可用于测试和调试 HTTP 服务,也可以作为文档非技术人员阅读或编写。
  2. 支持捕获响应(Capturing Response):支持从 HTTP 响应中提取或存储所需的数据,并注入到后续的请求中。
  3. 内置响应断言(Asserting Response):提供一系列断言(assertion)功能,允许你定义期望的 HTTP 响应状态码、头信息以及响应体内容,从而自动化地验证 HTTP 请求的响应。

竞品和相关项目

  1. curl:一款非常流行且功能强大的命令行工具,用于从命令行处理 HTTP、HTTPS 等多种协议的请求,支持文件传输、身份认证、代理等,适用于自动化脚本、调试 API、下载文件等多种场景。
  2. httpie:用 Python 实现的命令行 HTTP 客户端,专注于简化与 HTTP/HTTPS 服务的交互,设计更加直观和友好,特别适合开发人员、系统管理员和测试人员使用。
  3. 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 最新用法


http://www.mrgr.cn/news/34989.html

相关文章:

  • PCIe configuration 包分析
  • 【深度学习|地学应用】glacier——让我们一起看看深度学习在冰川研究中的应用是怎么样的呢?
  • np.pad实现零填充
  • Python知识点:如何使用Python与Java进行互操作(Jython)
  • js中正则表达式中【exec】用法深度解读
  • 云服务器(华为云)安装java环境。
  • 使用Adobe XD进行制作SVG字体
  • vulnhub(13):Digitalworld.local JOY(ftp 的未授权文件读写漏洞、文件覆盖提权)
  • LeetCode题练习与总结:二叉树的最近公共祖先--236
  • Miniconda 安装教程
  • 【算法业务】基于Multi-Armed Bandits的个性化push文案自动优选算法实践
  • mfc异步TCP Client通信向主线程发送接收消息
  • Vue3.5 有那些变化?
  • FPGA实现频率、幅度、相位可调的DDS以及DDS Compiler IP核的使用验证
  • Python_yield
  • inplace-abn报错
  • 2024年网络安全人才平均年薪 24.09 万,跳槽周期 31 个月,安全工程师现状大曝光!_2024网络安全人才市场状况研究报告
  • 智能密码、指纹锁语音芯片ic方案 可存放40s语音内容 NVD语音芯片
  • 电器行业文件加密怎么做?防泄密哪种方法实用?
  • CSS注释