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 次
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。输出如下
如果您觉得编写配置文件很麻烦,可以使用 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。输出如下所示
您还可以使用像 jq
这样的工具来处理其输出。当 xreq 检测到管道时,它将跳过打印状态/头部,并在 http 主体上跳过彩色格式。例如
xreq -p post -c requester/fixtures/req.yml -e a=1 -e b=2 | jq ".[] | select (.id < 3)"
输出
如果您觉得编写配置文件很麻烦,可以使用 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