micha/resty:命令行REST接口工具详解与使用指南
2025-07-10 08:22:55作者:胡易黎Nicole
概述
micha/resty 是一个轻量级的命令行REST接口工具,专为bash和zsh shell环境设计。它通过封装curl命令,提供了更加简洁直观的REST API调用方式,特别适合开发者在命令行环境下快速测试和调试HTTP接口。
核心功能
- 简洁的HTTP方法调用:支持HEAD、OPTIONS、GET、PATCH、POST、PUT、TRACE、DELETE等HTTP方法
- URL自动编码:自动处理特殊字符的URL编码
- 交互式编辑:支持使用vim编辑请求体内容
- 响应处理:自动识别HTML响应并使用lynx或html2text进行格式化
- Cookie管理:自动保存和发送Cookie
- 历史记录:保存主机和路径信息
安装与初始化
resty是一个shell脚本,无需复杂安装过程。只需将脚本放入您的PATH环境变量中即可使用。
初始化Resty非常简单:
# 设置基础URL
resty http://api.example.com
基本使用方法
设置目标主机
resty http://api.example.com
发起HTTP请求
resty为每种HTTP方法提供了对应的命令别名:
GET /users
POST /users -d '{"name":"John"}' --json
PUT /users/1 -d '{"name":"John Doe"}' --json
DELETE /users/1
请求选项
-Q
:禁用URL编码-q <query>
:添加查询字符串-V
:使用vim编辑请求体-Z
:原始输出(不处理HTML)-v
:详细输出--dry-run
:只显示curl命令而不执行--json
:设置JSON内容类型--xml
:设置XML内容类型
高级特性
交互式编辑请求体
对于POST、PUT等包含请求体的方法,可以使用-V
选项调用vim编辑请求内容:
echo '{"name":"John"}' | POST /users -V
响应处理
resty会自动检测响应内容类型。对于HTML响应,会使用lynx或html2text进行格式化输出;对于其他类型,则直接显示原始内容。
Cookie管理
resty会自动管理Cookie,所有请求都会自动携带之前服务器设置的Cookie。
默认选项配置
可以在配置目录中为特定主机或全局设置默认选项:
# 全局默认选项
echo "GET --json" > ~/.resty/resty
# 特定主机默认选项
echo "POST -H 'Authorization: Bearer token'" > ~/.resty/api.example.com
实用技巧
-
链式调用:结合管道和其他Unix工具处理响应
GET /users | jq '.[0].name'
-
调试API:使用
-v
选项查看详细请求信息GET /users -v
-
测试不同环境:快速切换不同主机
resty http://dev.api.example.com GET /users resty http://prod.api.example.com GET /users
-
查看curl命令:使用
--dry-run
查看生成的curl命令GET /users --dry-run
注意事项
- 当从非终端输入读取数据时,resty会自动将输入作为请求体
- 默认情况下会保留路径历史,可通过设置
RESTY_NO_PRESERVE_PATH
环境变量禁用 - 对于非2xx状态码,输出会重定向到stderr
总结
micha/resty是一个强大而灵活的命令行REST客户端,它简化了curl的使用,提供了更加符合开发者直觉的API调用方式。无论是快速测试API端点,还是编写自动化脚本,resty都是一个值得拥有的工具。通过本文介绍的功能和技巧,您可以更高效地在命令行环境中与RESTful服务交互。