封装通用 curl 函数可解决重复写命令易错、难复用、鉴权超时等逻辑分散问题;支持默认参数、自动注入 Authorization、结构化返回与错误提取,调用简洁可靠。

直接在 Shell 脚本里反复写 curl 命令容易出错、难复用,也难以统一控制鉴权头、超时、错误提取等关键行为。封装一个通用函数,能把这些逻辑收口管理,让每次调用像调用命令一样简洁可靠。
定义带默认参数的 curl 封装函数
函数应支持 URL、方法、请求体、Header、超时等常用参数,并内置合理默认值(如 User-Agent、Content-Type、10 秒超时),避免每次重复设置。
- 用
local声明所有参数变量,防止污染全局环境 - 默认启用
--fail和--silent,让失败不输出冗余内容,便于后续判断 - 超时通过
--connect-timeout和--max-time分开控制,避免连接卡住或响应过长 - 自动注入
Authorization头:优先读取环境变量API_KEY,也可传入-H "Authorization: Bearer xxx"覆盖
统一处理鉴权与安全配置
很多 API 要求 token 或 Basic Auth,硬编码在每个 curl 里既不安全也不灵活。函数应从环境或参数中自动提取并注入。
父母的功课——育儿心理学对话支持技能(心虫增强版)。提供结构化对话、情绪识别、场景匹配与安全检测;可选Python脚本(scripts/)在SKILL_DIR/data/本地存储评估历史、洞察与会话状态,不对外传输。核心路径:觉察(看见防御)→接纳(慈悲是……
- 若未显式传入
-H "Authorization:...",且API_KEY环境变量存在,则自动添加"Authorization: Bearer $API_KEY" - 支持
--insecure开关(仅调试用),但需明确提示风险 - 对敏感字段(如密钥)不在日志或错误输出中明文打印,可用占位符替代
结构化返回与错误提取
原始 curl 输出混杂响应体和错误信息,不利于脚本判断。函数应分离状态、响应体、HTTP 状态码和错误原因。
- 用
curl -w捕获状态码、耗时、大小等元信息,拼接进返回对象 - 错误分两类:curl 层(如 DNS 失败、连接超时)和 API 层(如 401/404)。前者用
curl -v 2>&1 | grep "curl:"提取;后者解析 JSON 中常见的error、message、detail字段 - 返回值可设计为多行字符串或临时文件路径,方便调用方用
read或jq解析
示例调用与复用方式
封装后,业务脚本只需聚焦接口语义,不再关心底层细节。
- 简单 GET:
response=$(api_get "https://api.example.com/v1/status") - 带 body 的 POST:
api_post "https://api.example.com/v1/chat" '{"model":"gpt-4","messages":[{"role":"user","content":"hi"}]}' - 自定义 Header 和超时:
api_request -X PATCH -H "X-Api-Version: v2" --timeout 15 "https://api.example.com/v1/user/123"
不复杂但容易忽略。

















