#http-request #http #request #rest #postman #command-line-tool #api

app barb

基于文件的HTTP(s)请求命令行工具

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编程

GPL-3.0-or-later

93KB
1K SLoC

BARB

Barb logo

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"}

鸣谢

依赖

~8–21MB
~277K SLoC