#http-request #api-client #cli #language #json-selector #request-response

app glue-cli

一个闪电般快速的 HTTP 客户端,具有出色的请求构建语法,专为人类设计

2 个版本

0.1.0 2022 年 10 月 8 日

#293HTTP 客户端

自定义许可证

1MB
816

🔗 glue

GitHub license PRs Welcome

发起请求,选择 JSON 响应,将它们嵌套在其他请求中:一个用于闪电般快速 CLI HTTP 调用的出色语法,专为人类设计

目录

入门

安装和更新

目前,您可以通过从源代码构建来安装或更新系统上的 glue。脚本 install.sh 使其变得相当简单。

在安装后,如果 Rust 已在您的系统上,将自动删除所有构建依赖项(包括 Rust)。

  1. 克隆仓库
git clone https://github.com/mikesposito/glue
  1. 转到 glue 根目录
cd glue
  1. 添加执行权限并运行 install.sh
chmod +x ./install.sh && ./install.sh

使用方法

要启动交互式 glue shell,只需运行

glue

或者,您也可以直接执行请求

glue <REQUEST>

您可以使用 glue 执行的最简单请求是只使用方法和 URL

glue 'get https://dog.ceo/api/breeds/list/all'
# or in glue shell:
get https://dog.ceo/api/breeds/list/all

语法

概述

gluescipt 请求的主要语法如下

[METHOD] [URL] [OPERATORS]

可用方法

Glue 关键字 描述
get 执行 GET http 调用
post 执行 POST http 调用
patch 执行 PATCH http 调用
put 执行 PUT http 调用
delete 执行 DELETE http 调用
req 重复使用从内存中保存的请求响应

可用操作符

操作符允许对请求(正文、头、参数、嵌套)和响应(选择器、变量)执行操作

操作 语法 示例
JSON 结果选择器 ^selector ^$.消息
正文属性 ~key=value ~用户名=admin
带引号的正文属性 ~key="value" ~全名="John Doe"
原始 JSON 正文 ~#-json-# ~#-{"用户名": "admin"}-#
头部属性 *key=value *授权=xxx
带有引号的头部属性 *key="value" *授权="Bearer xxx"
嵌套请求 { nested_request } 获取API.com/users/{获取API.com/me}
将响应保存到变量中 >var >login_request
请求分隔符 request**;** other_request req test1;req test2

JSON结果选择器

如果响应是JSON类型,可以在请求中使用字符 ^ 添加jsonpath选择器。Glue将只返回响应中的所需值。这也适用于嵌套请求

get https://dog.ceo/api/breeds/list/all^$.message.terrier

# OUTPUT:
# > [GET] https://dog.ceo/api/breeds/list/all
# 
# 
# [
#   [
#     "american",
#     "australian",
#     "bedlington",
#     "border",
#     "cairn",
#     "dandie",
#     "fox",
#     "irish",
#     "kerryblue",
#     "lakeland",
#     "norfolk",
#     "norwich",
#     "patterdale",
#     "russell",
#     "scottish",
#     "sealyham",
#     "silky",
#     "tibetan",
#     "toy",
#     "welsh",
#     "westhighland",
#     "wheaten",
#     "yorkshire"
#   ]
# ]

正文属性

可以使用字符 ~ 为请求添加体属性

post https://example.com/user/add ~username=admin
# or
post https://example.com/user/add~username=admin

# glue will send a body of type JSON 
# with a key "username" with value "admin"

原始JSON体

原始JSON值也可以在 ~#-JSON- 之间使用,而不是单个属性

post https://example.com/users ~#-{ "name": "John" }-#
# or 
post https://example.com/users~#-{ "name": "John" }-#

注意

通过使用嵌套请求功能,体属性可以从另一个请求的响应中获取其值。

头信息

您可以使用字符 * 将头部设置为请求

post https://example.com/user/add*authorization=6a75d4d7-84c3
# or
post https://example.com/user/add *authorization=6a75d4d7-84c3

# glue will set Authorization header
# to value "6a75d4d7-84c3"

引号也可以用于转义属性中的特殊glue字符或空格

post https://example.com/user/add*authorization="Bearer 6a75d4d7-84c3"

注意

通过使用嵌套请求功能,头部可以从另一个请求的响应中获取其值。

嵌套请求

Glue最实用的功能之一是请求嵌套。

您可以将一个请求的响应值(全部或部分)重用于构建另一个请求。

Glue支持无限嵌套,并将构建一个依赖树,将其分层,并并行执行每一层以实现最大时间优化。

您可以使用请求嵌套分隔符 {} 来定义所需的嵌套请求

get api.com/users/{ get api.com/me^$.user.id }/

# glue will execute this two requests:

# 1. api.com/me - and will select user.id from the response (eg. 12345)

# 2. api.com/users/12345/

请求也可以嵌套在体或头部参数中

get api.com/me *authorization={get api.com/login^$.access_token}/

运行文件

您还可以创建一个包含请求的文件以运行,并使用标志 -f 将文件路径传递给Glue以执行它。您可以在examples文件夹中的示例请求中进行尝试。

glue -f examples/sample-request.glue

多个请求

文件也可以包含多个连续请求,这些请求由 ; 分隔。请参阅./examples/sequential-requests.glue

将响应保存到变量中

您可以使用字符 > 将请求响应保存到您选择的临时变量中,以重用它而不必再次执行调用。

get https://dog.ceo/api/breeds/list/all >test_req

使用已保存的响应

req test_req

您还可以使用 ^ 对保存的响应使用选择器

req test_req^$.message.terrier

注意:变量仅在相同的glueshell会话中可用,并在会话结束时删除。

贡献

此存储库的主要目的是继续发展glue核心,使其更快、更易于使用。glue的开发在GitHub上公开进行,我们感谢社区为提供错误修复和改进所做的贡献。请阅读以下内容,了解您如何参与改进glue。

行为准则

glue项目已采纳了一项行为准则,我们希望所有项目参与者都能遵守。请阅读完整文本,以便了解哪些行为将被容忍,哪些行为则不被容忍。

贡献指南

请阅读我们的贡献指南,了解我们的开发流程、如何提出错误修复和改进建议,以及如何构建和测试对glue的更改。

初次贡献问题

为了帮助您熟悉我们的贡献流程,我们列出了一些包含相对有限范围错误的良好入门问题。这是一个开始的好地方。

许可证

glue采用MIT许可

依赖关系

~12–25MB
~406K SLoC