首页
/ micha/resty:命令行REST接口工具详解与使用指南

micha/resty:命令行REST接口工具详解与使用指南

2025-07-10 08:22:55作者:胡易黎Nicole

概述

micha/resty 是一个轻量级的命令行REST接口工具,专为bash和zsh shell环境设计。它通过封装curl命令,提供了更加简洁直观的REST API调用方式,特别适合开发者在命令行环境下快速测试和调试HTTP接口。

核心功能

  1. 简洁的HTTP方法调用:支持HEAD、OPTIONS、GET、PATCH、POST、PUT、TRACE、DELETE等HTTP方法
  2. URL自动编码:自动处理特殊字符的URL编码
  3. 交互式编辑:支持使用vim编辑请求体内容
  4. 响应处理:自动识别HTML响应并使用lynx或html2text进行格式化
  5. Cookie管理:自动保存和发送Cookie
  6. 历史记录:保存主机和路径信息

安装与初始化

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

实用技巧

  1. 链式调用:结合管道和其他Unix工具处理响应

    GET /users | jq '.[0].name'
    
  2. 调试API:使用-v选项查看详细请求信息

    GET /users -v
    
  3. 测试不同环境:快速切换不同主机

    resty http://dev.api.example.com
    GET /users
    
    resty http://prod.api.example.com
    GET /users
    
  4. 查看curl命令:使用--dry-run查看生成的curl命令

    GET /users --dry-run
    

注意事项

  1. 当从非终端输入读取数据时,resty会自动将输入作为请求体
  2. 默认情况下会保留路径历史,可通过设置RESTY_NO_PRESERVE_PATH环境变量禁用
  3. 对于非2xx状态码,输出会重定向到stderr

总结

micha/resty是一个强大而灵活的命令行REST客户端,它简化了curl的使用,提供了更加符合开发者直觉的API调用方式。无论是快速测试API端点,还是编写自动化脚本,resty都是一个值得拥有的工具。通过本文介绍的功能和技巧,您可以更高效地在命令行环境中与RESTful服务交互。