ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Ain Executables深度解析:$(command)在模板中执行脚本,动态获取JWT Token就这么简单

Ain Executables深度解析:$(command)在模板中执行脚本,动态获取JWT Token就这么简单 Ain Executables深度解析$(command)在模板中执行脚本动态获取JWT Token就这么简单【免费下载链接】ainA HTTP API client for the terminal项目地址: https://gitcode.com/gh_mirrors/ai/ainAin 是一个运行在终端的 HTTP API 客户端可以用模板文件发起 API 请求。而它的 Executables 功能$(command)语法允许你在模板中直接执行任意脚本把命令的输出动态填进请求里——动态获取 JWT Token 就是这么简单。 Executables 是什么Ain 的模板文件.ain后缀由若干区块组成如[Host]、[Headers]、[Body]等。除了内置的环境变量${VAR}Ain 还支持Executables模板中任何$(command arg1 arg2)形式的表达式都会被替换为该命令的标准输出STDOUT。举个例子$(echo 1)会被直接替换成1。它的第一个词是$PATH中可执行的命令其余部分是参数。实现代码位于 internal/pkg/parse/executable.go多个 Executables 会并行执行并且受[Config]中Timeout的统一超时控制。几个关键特性✅与变量无缝组合环境变量先替换再执行命令所以$(cat ${ENV}/token.json)完全可行✅只替换一次命令返回的$(...)或${...}文本不会被二次处理避免意外❌[Config]区块除外超时必须在执行命令前确定因此该区块不支持 Executables 实战动态获取 JWT Token很多 REST API 都要求Authorization: Bearer token头。手动复制粘贴 Token 既繁琐又容易过期Ain 官方示例就用 Executables 优雅地解决了这个问题。第一步写一个获取 Token 的模板 examples/dummyjson.com/advanced/get-token.ain[Host] auth/login [Method] Post [Headers] Content-Type: application/json [Body] { username: emilys, password: emilyspass, expiresInMins: 30 }运行ain base.ain get-token.ain就能拿到完整的 JWT 响应。第二步在 examples/dummyjson.com/advanced/auth.ain 中嵌套调用自己用jq提取 Token[Host] auth/ [Headers] Authorization: Bearer $(bash -c ain base.ain get-token.ain | jq -r .accessToken)⚠️ 命令参数含空格或管道时需要用bash -c加引号包裹整个命令串这是 Executables 唯一需要留意的书写细节。最后把auth.ain加进任意请求即可自动携带 Tokenain base.ain auth.ain products/get.ain这样就实现了请求前自动登录、自动注入 Token的完整流程整个过程无需任何额外配置文件。️ 实用技巧与边界情况引号需要更复杂的管道逻辑时用sh -c find . | fzf -m | xargs echo这类命令串写法引号内可再用\、\转义相关用例见 test/e2e/templates/ok-quotes-in-executables.ain转义参数中出现)等结束符时用反引号转义如$(node -e console.log(Hi))变量先行${VAR}在命令执行前就已替换因此$(printf ${VAR})这种变量进命令的写法可用见 test/e2e/templates/ok-env-inside-executable.ain调试加-p参数可打印 Ain 最终组装出的 curl/wget/httpie 命令Token 是否正确注入一目了然 小结Executables 让 Ain 从API 客户端升级为API 工作流引擎Token 刷新、分页参数、动态 ID 都能以一行$(command)融入模板。配合多模板组合base.ainauth.ain 具体接口文件复杂认证场景也能保持极简。更多完整用法可以参考 examples/dummyjson.com/advanced/ 和 README.md 中的 Executables 章节。【免费下载链接】ainA HTTP API client for the terminal项目地址: https://gitcode.com/gh_mirrors/ai/ain创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表