15个不稳定版本 (3个重大变更)
0.4.3 | 2022年4月6日 |
---|---|
0.4.2 | 2022年4月2日 |
0.4.1 | 2022年3月28日 |
0.3.1 | 2022年3月20日 |
0.1.5 | 2022年2月24日 |
#2323 in Web编程
93KB
1K SLoC
BARB
Barb是一个基于文件的API查询工具,与版本控制配合良好,适合UNIX终端使用。
目录
安装
Barb目前仅可通过Cargo
获取。要安装仅具有JSONPath的默认版本,请使用rustup安装rust
,操作如下:
cargo install barb
如果您想使用JQ过滤,请确保您的机器上已安装libjq
,然后运行
cargo install barb --features jq
示例用法
barb [options] <file 1> <file 2> ... <file n>
CLI选项
-a, --all-headers
:打印所有头部,请求和响应-b, --body
:仅打印响应正文-h, --headers
:仅打印响应头部-r, --raw
:不格式化响应正文-V, --version
:打印软件版本-n, --no-color
:不使用彩色输出-f, --filter
:一个JSON路径来覆盖在barb文件中定义的任何过滤器-F, --no-filter
:禁用所有过滤器(除了依赖项)--hdr <HDR>
:设置/覆盖格式为NAME=VALUE
的头部,可以出现多次(不影响依赖)--help
:显示帮助页面
Barb格式
Barb 使用自定义文件格式来执行请求。每个文件包含 一个 请求,并由请求序言开始。示例
#POST^http://my-blog.com/posts
#Authorization: TOKEN {API_TOKEN}
#$$.filter
{
"title": "A post",
"content": "My pretty blog post"
}
序言包含执行请求相关的指令,例如方法、URL 和头部。序言 必须以空行结束。
动词行
动词行指示 barb 要执行什么类型的请求以及在哪里。它遵循以下严格格式
#<METHOD>^<URL>
URL
支持变量替换,但 METHOD
不支持。
支持的方法有
- GET
- POST
- PUT
- DELETE
- PATCH
头部
头部格式如下
#<HEADER NAME>: <HEADER VALUE>
HEADER VALUE
支持变量替换,HEADER NAME
不支持。
可以有零个或多个头部。
过滤
Barb 默认支持 JSONPath 过滤,并且可选 JQ。
JSONPath
Barb 支持使用 JSONPath 过滤响应体。其格式如下
#$<JSON path>
PATH
支持变量替换。有关过滤器和其语法的更多信息,请参阅 JSONPath。
过滤器可以命名以通过提取值填充执行变量。考虑以下示例,它将设置变量 FOOBAR 的值
#FOOBAR$<JSON path>
JQ
Barb 支持响应体的 JQ 过滤。其格式如下
#|<JQ FILTER>
JQ FILTER
支持变量替换。有关过滤器和其语法的更多信息,请参阅 JQ 手册。
过滤器可以命名以通过提取值填充执行变量。考虑以下示例,它将设置变量 FOOBAR 的值
#FOOBAR|<JQ FILTER>
依赖
Barb 文件只能声明 一个 依赖,该依赖将在主文件执行之前执行。如果声明了多个依赖项,则仅执行最后一个。
语法
#>relative/path/to/file.barb
依赖项的路径可以是相对于当前文件的相对路径,也可以是绝对路径。当运行具有相同依赖项的多个 barb 文件时,该依赖项将仅执行 一次。
Barb 依赖 不能有自己的依赖。在依赖项中声明的任何依赖项都将被忽略。
正文
序言之后的内容被视为正文,并将作为以下方法的请求发送
- PUT
- POST
- PATCH
正文不支持变量替换。
变量替换
Barb 可以使用以下占位符格式将环境变量值和 .env
中定义的变量包含到请求中
占位符格式
{VARIABLE NAME}
这允许做以下事情
$ export BASE_URL="http://127.0.0.1:8000"
$ cat api-status.barb
#GET^{BASE_URL}/api/v1/status
$ barb api-status.barb
GET http://127.0.0.1:8000/api/v1/status
200 OK
{"status": "OK"}
默认值
占位符可以指定一个默认值,如果环境变量不可用,则使用该默认值。其格式如下
{VARIABLE NAME:-DEFAULT}
示例
$ cat api-ping.barb
#GET^http://{HOST:-foobar.com}/api/ping
$ barb api-ping.barb
GET http://foobar.com/api/ping
200 OK
{"response": "pong"}
$ HOST=bar.com barb api-ping.barb
GET http://bar.com/api/ping
200 OK
{"response": "pong"}
鸣谢
- 代码: Guillaume Pasquet
- 标志: Harpoon Chain Icon by Lorc under CC By 3.0
依赖
~8–21MB
~277K SLoC