#curl #bookmark #environment #jwt #header #yaml #http

bin+lib curlz

具有占位符、书签和环境功能的 curl 包装器,就像 postman 一样

12 个版本

0.1.0-alpha.122023年3月24日
0.1.0-alpha.112023年3月16日
0.1.0-alpha.52023年2月28日
0.1.0-alpha.42023年1月17日
0.1.0-alpha.22022年8月16日

10#bookmark

Download history 1/week @ 2024-03-13 13/week @ 2024-03-27 15/week @ 2024-04-03

每月 68 次下载

GPL-3.0-only

90KB
2.5K SLoC

curlz

License: GPL v3 Build Status crates.io dependency status

一个具有占位符、书签和环境功能的 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) }},其中claimsjwt_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

示例 #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