#http-request #http #curl #api-request #cli #cli-tool

app xreq

一个基于预定义配置文件的复杂请求的命令行工具

7个不稳定版本 (3个破坏性更改)

0.4.3 2022年8月31日
0.4.2 2022年8月30日
0.3.0 2022年8月27日
0.2.0 2022年8月27日
0.1.0 2022年8月27日

#1752开发工具

每月下载 27

MIT 许可证

49KB
568

HTTP请求和差异工具

提供了两个独立的命令行工具

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

xdiff

配置

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

---
rust:
  request1:
    method: GET
    url: https://www.rust-lang.net.cn/
    headers:
        user-agent: Aloha
    params:
      hello: world
  request2:
    method: GET
    url: https://www.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命令行工具将查找这些路径中的配置。

如何使用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需要发送和格式化请求,因此这部分逻辑被提取为独立的命令行工具 xreq

配置

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

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

您可以将配置文件放在 ~/.config/xreq.yml/etc/xreq.yml~/xreq.yml 中。xreq命令行工具将查找这些路径中的配置。

如何使用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–25MB
~400K SLoC