2 个版本
0.1.0 | 2022 年 10 月 8 日 |
---|
#293 在 HTTP 客户端
1MB
816 行
🔗 glue
发起请求,选择 JSON 响应,将它们嵌套在其他请求中:一个用于闪电般快速 CLI HTTP 调用的出色语法,专为人类设计。
目录
入门
安装和更新
目前,您可以通过从源代码构建来安装或更新系统上的 glue。脚本 install.sh
使其变得相当简单。
在安装后,如果 Rust 已在您的系统上,将自动删除所有构建依赖项(包括 Rust)。
- 克隆仓库
git clone https://github.com/mikesposito/glue
- 转到 glue 根目录
cd glue
- 添加执行权限并运行 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