12 个版本
0.1.0-alpha.12 | 2023年3月24日 |
---|---|
0.1.0-alpha.11 | 2023年3月16日 |
0.1.0-alpha.5 | 2023年2月28日 |
0.1.0-alpha.4 | 2023年1月17日 |
0.1.0-alpha.2 | 2022年8月16日 |
10 在 #bookmark
每月 68 次下载
90KB
2.5K SLoC
一个具有占位符、书签和环境功能的 curl 包装器,就像 postman 一样,但适用于终端
功能
- 从
.env
和.yaml
环境文件中获取变量 - 使用 minijinja 模板引擎进行占位符评估,可用于 URL、HTTP 头部、HTTP 主体和其他传递给 curl 的参数
- 可以保存并执行带有短名的请求作为书签
- 支持任何在
--
之后出现的 curl 参数,可以作为 curl 的直接替代品 - 特殊的占位符用于与用户交互
- 提示输入密码,如下所示
{{ prompt_password() }}
curlz r https://api.github.com/user -- -u "{{ username }}:{{ prompt_password() }}"
- 提示输入带标签的交互式输入,如下所示
{{ prompt_for("Username") }}
或{{ prompt_for("Birthdate") }}
curlz -- -u "{{ prompt_for("Username") }}:{{ prompt_password() }}" https://api.github.com/user
- 提示输入密码,如下所示
- ️评估URL开头占位符,例如:
curlz r --define 'host=https://httpbin.org' '{{host}}/get'
- ️为开发者提供的特殊占位符,例如用于Json Web Tokens (JWT):
{{ jwt(claims, jwt_signing_key) }}
,其中claims
和jwt_signing_key
可以在环境文件中查找,或者可以直接提供映射和字符串curlz r -H 'Authorization: Bearer {{ jwt({"uid": "1234"}, "000") }}' https://httpbin.org/bearer -- -vvv
- 通过
-d | --data
发送HTTP正文curlz r -d 'Hello World' -X POST https://httpbin.org/anything
- 使用
--json
参数发送JSON正文和头信息curlz r --json '{ "foo": "bar" }' -X POST 'https://httpbin.org/anything'
WIP
- 支持REST客户端模板语言 参见 #5
示例 #1
在这个示例中,我们将通过curl从GitHub下载给定语言的预配置.gitignore
curlhttps://api.github.com/gitignore/templates/Rust
- 使用curlz的相同方法:
curlz r https://api.github.com/gitignore/templates/Rust
- 添加一个交互式请求的占位符
curlz r https://api.github.com/gitignore/templates/{{ prompt_for("Language") | title }}'
- 现在让我们将这个请求添加到书签
curlz r --bookmark 'https://api.github.com/gitignore/templates/{{ prompt_for("Language") | title }}' Language: rust Please enter a bookmark name: gitignore
- 最后,我们可以从现在开始继续使用书签:
curlz r gitignore
模板函数文档
Json Web Token - jwt(claims: map, [jwt_signing_key: string])
- 参数
claims
:它是一个键值对映射,例如{"uid": "1234"}
,这是JWT的有效载荷jwt_signing_key
:它是一个字符串,这是可选的,可以在环境文件中提供名为jwt_signing_key
的变量
- 输出:字符串是Json Web Token (JWT)
- 注意事项
- 哈希算法是
HS256
,JWT头是{"alg": "HS256", "typ": "JWT"}
- 默认情况下,声明
exp
的过期时间设置为15分钟,但可以被覆盖 - 声明
iat
的发行时间戳是自动设置的,不能被覆盖
- 哈希算法是
依赖项
~15–27MB
~477K SLoC