ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Ain模板文件语法详解:8大Section从[Host]到[Backend]一次看懂.ain格式的完全指南

Ain模板文件语法详解:8大Section从[Host]到[Backend]一次看懂.ain格式的完全指南 Ain模板文件语法详解8大Section从[Host]到[Backend]一次看懂.ain格式的完全指南【免费下载链接】ainA HTTP API client for the terminal项目地址: https://gitcode.com/gh_mirrors/ai/ainAin 是一款运行在终端里的 HTTP API 客户端是 Postman、Paw、Insomnia 的命令行替代品。它的核心是.ain模板文件一种用 8 大 Section[Host]、[Query]、[Backend] 等描述调哪个接口、用什么方法、带哪些参数的纯文本格式。本文带你完整看懂 .ain 语法——每个 Section 怎么写、跨文件时是追加还是覆盖、变量与命令如何嵌入一次建立对模板格式的全部认知。.ain 模板文件长什么样10 秒上手一个 .ain 文件就是若干段落标题 内容行。下面是一个涵盖全部 8 大 Section 的完整示例[Host] https://dummyjson.com/product/${ID} [Query] limit10 [Headers] Content-Type: application/json [Method] GET [Body] { title: New title } [Config] Timeout5 [Backend] curl [BackendOptions] -sS首次使用推荐先用 Ain 自带的模板生成器运行ain -b basic-template.ain它会检测系统里可用的后端curl / wget / httpie并生成一个可直接运行的起点文件再用ain basic-template.ain --vars PORT8080发起请求即可。8大Section速查表跨文件是追加还是覆盖Ain 允许一次传入多个模板文件数据按 Section 合并。理解每个 Section 的合并策略是掌握 .ain 格式的关键Section作用跨文件行为必填[Host]API 地址域名 路径追加 append✅[Query]查询参数? 后面的键值对追加 append[Headers]请求头追加 append[Method]HTTP 方法 GET/POST/PATCH…覆盖 overwrite[Body]请求体原样发送覆盖 overwrite[Config]Ain 自身配置覆盖 overwrite[Backend]调用引擎 curl / wget / httpie覆盖 overwrite✅[BackendOptions]透传给后端命令的选项追加 append 几条通用规则Section 名称不区分大小写、忽略前后空白约定俗成用 CamelCase 左对齐书写同一个文件里不能重复定义同一个 Section段落内容到下一个 Section 开始或文件结尾为止每行内容中#之后都是注释会被忽略只有[Host]和[Backend]是必填的其余按需书写。Section 的完整定义可以在源码 internal/pkg/parse/sections.go 中看到语法测试集见 grammars/tests.ain。逐个拆解从 [Host] 到 [BackendOptions][Host]唯一必填的地址段写完整 URL 的任意部分多行会拼接成一个地址。经典用法基础文件里只写域名具体接口文件里只写路径例如http://localhost:3000/api/auth/login。最终 URL 会自动做 URL 编码整个模板组合后必须是一个且仅一个有效地址。[Query]自动拼接查询参数每行一个keyvalueAin 会用分隔符默认可在[Config]里用QueryDelim自定义连接后追加到 URL 末尾并自动 URL 编码。page3与page 3等价空格会被编码为。适合把多个接口共用的参数如API_KEYxxx放进一个基础文件。[Headers]一行一个请求头[Headers] Authorization: Bearer $(./get-jwt-token.sh) Content-Type: application/json注意这里可以直接嵌入可执行命令动态生成 Token见下文。[Method]不写就默认 GET写POST、PATCH、DELETE等省略时走后端默认curl / wget / httpie 都是 GET。[Body]原样发送的请求体内容会保留格式、去掉首尾空行后写入临时文件再以文件形式交给后端发送。两个实用细节加-l参数可保留临时文件加-p参数只打印不执行时请求体会落盘为ain-body随机数文件方便把命令分享出去后仍能复现。[Config]Ain 专属开关只有两个参数都不区分大小写参数写法说明超时Timeout10单位秒覆盖整个执行过程不写则不超时。唯一不允许使用可执行命令的 Section查询分隔符QueryDelim;拼接 [Query] 行时用的分隔符默认[Backend]选择 curl、wget 或 httpie三选一决定实际发请求的引擎。可以用ain -b生成模板时自动探测本机装了哪个并帮你选上。[BackendOptions]透传给后端的原始选项每行一个选项原样拼到后端命令里。例如给 curl 加-sS去掉进度条[Backend] curl [BackendOptions] -sS # 管道中禁用进度条变量与可执行命令让模板活起来 这是 .ain 格式最强大的两处能力环境变量${VAR}模板里${ID}会从环境中取值替换。值来自 shell 环境、当前目录的.env文件或命令行--vars ID123--vars优先级最高且在所有模板文件名之后书写。可执行命令$(命令 参数)命令的 STDOUT 会替换掉整个表达式例如Authorization: Bearer $(bash -c ./get-login.sh | jq -r .token)就能自动换取 JWT。替换顺序是先环境变量、后可执行命令所以命令里还能引用${VAR}且每类都只替换一次。多文件组合实战base.ain 组织你的 API 项目利用追加 / 覆盖策略可以把 API 组织成文件夹层级。例如仓库示例里 examples/dummyjson.com/advanced/base.ain 定义公共部分[Host] https://dummyjson.com/ [Backend] curl [Config] Timeout5 [BackendOptions] -sS具体接口只写差异部分如 examples/dummyjson.com/advanced/products/add.ain[Host] products/add [Method] POST [Body] { title: New title }两条命令组合即可ain examples/dummyjson.com/advanced/base.ain examples/dummyjson.com/advanced/products/add.ain[Host] 追加拼出完整地址[Backend]、[Body] 等由具体文件覆盖——这就是 .ain 格式文件即 API 集合的设计精髓。更多示例见 examples/dummyjson.com/simple/ 目录。注释、转义与常见坑3 个符号要记牢符号含义想要字面量时#注释反引号转义#${环境变量${$(可执行命令$(其他高频要点URL 编码路径和查询参数自动编码已编码的保持原样需要字面的和%时请手动写成%2B、%25排错模板写错时 Ain 会报 Fatal 错误并给出文件名、行号和上下文请求发不出去就加-p查看最终生成的 curl/wget/httpie 命令文件名结尾加!可先用编辑器修改再运行如ain get-post.ain!。核心文件速查想深入源码或找更多样例从这些入口开始Section 解析逻辑internal/pkg/parse/sections.go语法测试集含各种大小写/转义边界情况grammars/tests.ain简单示例examples/dummyjson.com/simple/get-product-by-id.ain进阶示例base 具体接口组合examples/dummyjson.com/advanced/官方完整文档README.md一句话总结.ain 格式 8 个 Section 描述怎么调接口 ${}/$()注入动态值 多文件按追加/覆盖策略组合。看懂这张速查表你就能直接上手管理自己的 API 模板库了。【免费下载链接】ainA HTTP API client for the terminal项目地址: https://gitcode.com/gh_mirrors/ai/ain创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表