4 个版本 (2 个破坏性版本)

0.3.1 2022 年 8 月 30 日
0.3.0 2022 年 8 月 30 日
0.2.0 2022 年 8 月 27 日
0.1.0 2022 年 8 月 27 日

#870开发工具


2 crates 中使用

MIT 许可证

33KB
452

HTTP 请求和 diff 工具

提供了两个独立的 CLI

  • xdiff:一个用于比较 HTTP 请求的 diff 工具。它可以用来比较生产环境、预发布环境或同一 API 的两个版本之间的差异。
  • xreq:一个基于预定义配置文件构建 HTTP 请求的工具。它可以用来替代 curl/httpie 来构建复杂的 HTTP 请求。

xdiff

配置

您可以为 xdiff 配置多个配置文件。每个配置文件由一个名称标识。在配置文件内部,您可以定义两个请求的详细信息(方法、URL、查询参数、请求头、请求体),以及比较时应跳过的响应部分(目前只能跳过头部)。

---
rust:
  request1:
    method: GET
    url: http://rust-lang.net.cn/
    headers:
        user-agent: Aloha
    params:
      hello: world
  request2:
    method: GET
    url: http://rust-lang.net.cn/
    params: {}
  response:
    skip_headers:
      - set-cookie
      - date
      - via
      - x-amz-cf-id

您可以将配置放在 ~/.config/xdiff.yml/etc/xdiff.yml~/xdiff.yml 中。xdiff CLI 将从这些路径中查找配置。

如何使用 xdiff?

您可以使用 cargo install xdiff 来安装它(需要帮助安装 Rust 工具链?)。安装完成后,您就可以使用它了。

 xdiff --help
xdiff 0.4.1
A CLI to diff two requests based on predefined profiles.

USAGE:
    xdiff <SUBCOMMAND>

OPTIONS:
    -h, --help       Print help information
    -V, --version    Print version information

SUBCOMMANDS:
    help     Print this message or the help of the given subcommand(s)
    parse    parse a URL and print the generated diff config
    run      diff two API responses based on a given profile

 xdiff run --help
xdiff-run
diff two API responses based on a given profile

USAGE:
    xdiff run [OPTIONS] --profile <PROFILE>

OPTIONS:
    -c, --config <CONFIG>      Path to the config file
    -e <EXTRA_PARAMS>          Extra parameters to pass to the API
    -h, --help                 Print help information
    -p, --profile <PROFILE>    API profile to use

示例

xdiff run -p todo -c requester/fixtures/diff.yml -e a=1 -e b=2

这将使用在 requester/fixtures 中定义的 diff.yml 中的 todo 配置文件,并为查询字符串添加额外的参数 a=1, b=2。输出如下所示

screenshot

如果您觉得编写配置文件很麻烦,您可以使用 xdiff parse 子命令来解析 URL 并打印生成的配置。

 xdiff parse
 Url1 · https://jsonplaceholder.typicode.com/todos/1?a=1
 Url2 · https://jsonplaceholder.typicode.com/todos/2?b=2
 Give this a profile name · todo
 Select response headers to skip · date, x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset, vary, cache-control, expires, etag, via, cf-cache-status, expect-ct, report-to, cf-ray
---
todo:
  request1:
    url: https://jsonplaceholder.typicode.com/todos/1
    params:
      a: '100'
  request2:
    url: https://jsonplaceholder.typicode.com/todos/2
    params:
      c: '200'
  response:
    skip_headers:
    - date
    - x-ratelimit-limit
    - x-ratelimit-remaining
    - x-ratelimit-reset
    - vary
    - cache-control
    - expires
    - etag
    - via
    - cf-cache-status
    - expect-ct
    - report-to
    - cf-ray

xreq

由于 xdiff 需要发送和格式化请求,因此这部分逻辑被提取为独立的 CLI xreq

配置

您可以为 xreq 配置多个配置文件。每个配置文件由一个名称标识。在配置文件内部,您可以定义请求的详细信息(方法、URL、查询参数、请求头、请求体)。

---
rust:
  url: http://rust-lang.net.cn/
post:
  url: https://jsonplaceholder.typicode.com/comments
  params:
    postId: 1

您可以将配置放在 ~/.config/xreq.yml/etc/xreq.yml~/xreq.yml 中。xreq CLI 将从这些路径中查找配置。

如何使用 xreq?

您可以使用 cargo install xreq 来安装它。安装完成后,您就可以使用它了。

 xreq --help
xreq 0.4.1
A CLI to send complicated request based on predefined profiles.

USAGE:
    xreq <SUBCOMMAND>

OPTIONS:
    -h, --help       Print help information
    -V, --version    Print version information

SUBCOMMANDS:
    help     Print this message or the help of the given subcommand(s)
    parse    parse a URL and print the generated request config
    run      Send API request based on a given profile

 xreq run --help
xreq-run
Send API request based on a given profile

USAGE:
    xreq run [OPTIONS] --profile <PROFILE>

OPTIONS:
    -c, --config <CONFIG>      Path to the config file
    -e <EXTRA_PARAMS>          Extra parameters to pass to the API. If no prefix, it will be used
                               for querystring; If prefix is '@', it will be used for body; If
                               prefix is '%', it will be used for header
    -h, --help                 Print help information
    -p, --profile <PROFILE>    API profile to use

示例

xreq run -p post -c requester/fixtures/req.yml -e a=1 -e b=2

这将使用在requester/fixtures中定义的req.yml中的todo配置文件,并为查询字符串添加额外的参数a=1, b=2。输出看起来像这样

screenshot

您还可以使用像jq这样的工具来处理其输出。当xreq检测到管道时,它将跳过打印状态/标题,并跳过http正文上的彩色格式。例如

xreq -p post -c requester/fixtures/req.yml -e a=1 -e b=2 | jq ".[] | select (.id < 3)"

输出

screenshot

如果您觉得编写配置文件很麻烦,可以使用xreq parse子命令来解析URL并打印生成的配置。

 xreq parse
 Url to parse · https://jsonplaceholder.typicode.com/todos/1?a=1&b=2
 Give this url a profile name · todo
---
todo:
  url: https://jsonplaceholder.typicode.com/todos/1
  params:
    a: '1'
    b: '2'

依赖项

~11-27MB
~399K SLoC