
resterm v1.5.6
适用于 HTTP、GraphQL 和 gRPC 的终端 API 客户端。使用纯 .http 文件,可进行 diff 和版本管理,支持工作流、模拟、性能分析、追踪、OpenAPI 导入、SSH 隧道、Kubernetes 端口转发、WebSocket、SSE 以及 CLI 运行器。
Resterm
面向终端的 API-as-code 工作台。
追踪与时间线视图
Resterm 是一款 API 客户端,它将请求存储在纯 .http 和 .rest 文件中,这些文件可以像你的其他代码一样并排存放在仓库中。你可以使用终端 UI,也可以通过 resterm run 在 CI 中运行相同的文件。
截图
查看 UI 实际效果(点击展开)
工作流
性能分析器
解释
RestermScript
为什么选择 Resterm
- 支持 HTTP、GraphQL、gRPC、WebSocket 和 SSE。
- 请求文件中的自动化: 条件(
@when、@if/@elif/@else、@for-each)、多步骤工作流(@workflow/@step)、捕获、变量和断言(@capture、@var、@assert)。 - 请求文件中的隧道:
@ssh和@k8s可将请求通过 SSH 堡垒机或 Kubernetes 端口转发进行路由,Resterm 会为你打开和关闭这些隧道,并支持按文件或工作区配置。 - 记录 HTTP 流量,并将其导出为 Resterm
.http文件,作为请求或模拟响应。 - RestermScript,一种为 Resterm 构建的小型表达式语言,需要时可使用 JavaScript 钩子。
- 类 Vim 控制,带有快捷键提示、可搜索的离线帮助、光标下的
Shift+k帮助、/搜索以及:w、:q、:help和:docs等命令。 - 认证: OAuth 2.0(客户端凭证、密码、带 PKCE 的授权码)以及
@auth command,可复用你已安装的 CLI 中的令牌,例如gh auth token。 - CLI 运行器:
resterm run用于脚本化运行和 CI,支持 JSON 和 JUnit 输出。 - 模拟服务器,声明在它们所模拟的请求旁边,支持匹配规则、序列、调用验证和热重载。
- 跨环境的时间线追踪、性能分析和运行比较。
- 流式记录以及用于 WebSocket 和 SSE 的交互式控制台。
- 无 AI 集成
安装
macOS 和 Linux:
brew install resterm
# or
curl -fsSL https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.sh | bash
Windows:
iwr -useb https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.ps1 | iex
从源码安装,需要 Go 1.25 或更新版本:
go install github.com/unkn0wn-root/resterm/cmd/resterm@latest
[!IMPORTANT] 预构建的 Linux 二进制文件依赖 glibc 2.32 或更新版本。在较旧的发行版上,请使用更新的 glibc 工具链从源码构建,或在使用发布归档之前升级 glibc。
Homebrew 安装通过 brew upgrade resterm 更新。来自发布页面或安装脚本的二进制文件使用 resterm --check-update 和 resterm --update,它们会下载、验证并就地安装。在 Windows 上,旧二进制文件会以 resterm.exe.old 的形式保留在新文件旁边,并在下次更新时清理。
手动安装
适用于 macOS、Linux 和 Windows(amd64 和 arm64)的二进制文件位于发布页面。以下命令与从发布页面手动下载的效果相同。Unix 版本需要 curl 和 jq。
# Find the latest release tag
LATEST_TAG=$(curl -fsSL https://api.github.com/repos/unkn0wn-root/resterm/releases/latest | jq -r .tag_name)
# Download the matching binary (Darwin/Linux + amd64/arm64)
curl -fL -o resterm "https://github.com/unkn0wn-root/resterm/releases/download/${LATEST_TAG}/resterm_$(uname -s)_$(uname -m)"
# Install on PATH
chmod +x resterm
sudo install -m 0755 resterm /usr/local/bin/resterm
$latest = Invoke-RestMethod https://api.github.com/repos/unkn0wn-root/resterm/releases/latest
$asset = $latest.assets | Where-Object { $_.name -like 'resterm_Windows_*' } | Select-Object -First 1
Invoke-WebRequest -Uri $asset.browser_download_url -OutFile resterm.exe
# Optionally move to a directory on PATH:
Move-Item resterm.exe "$env:USERPROFILE\bin\resterm.exe"
快速开始
mkdir my-api && cd my-api
resterm init
resterm
resterm init 会创建一个可以立即开始使用的小型项目。生成的 requests.http 包含本地模拟场景以及一些相互构建的请求,涵盖断言、bearer 认证、JSON 匹配、json-rules 和 @for-each。按 g Shift+m 启动模拟服务器,然后按 Ctrl+Enter 发送光标下的请求。
你也可以不使用 init 直接打开 Resterm。运行 resterm,输入 URL 并按 Ctrl+Enter。你也可以粘贴 curl 命令——这同样有效。
同一个文件也可以在没有 TUI 的情况下运行:
resterm run --request CreateUser requests.http
请求文件
Resterm 支持标准 HTTP 语法,但通过用于配置和自动化的 # @ 指令,它的功能远不止于此:
# @setting base-url https://api.example.com/v1/
### Create users
// Send this request once for each name in the list.
# @for-each ["david", "tom"] as name
# @when env.mode == "development"
# @assert response.statusCode == 201
POST users
Content-Type: application/json
{"name":"{{= name }}"}
将 @setting 放在第一个请求之前会应用于整个文件。### 开始一个新请求,指令可以重复、限制或检查其下方的请求。更多内容见 _examples/ 和指令参考。
模拟服务器
模拟响应定义在与请求相同的文件中(但并非必须如此)。例如,在一个路由上定义两个场景:
### Payment accepted
# @mock method=POST path=/payments name=accepted default=true latency=150ms
HTTP/1.1 202 Accepted
Content-Type: application/json
{"id":"pay_123","status":"pending"}
### Payment declined
# @mock method=POST path=/payments name=declined
# @match query={"mode":"decline"} headers={"X-Tenant":"demo"} json={"amount":0}
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
{"error":"amount must be positive"}
提供一个文件或整个目录:
resterm mock ./requests.http
resterm mock --recursive --addr 127.0.0.1:9090 ./requests
基于查询、请求头和请求体的匹配、用于轮询测试的响应序列、调用验证和热重载在模拟服务器参考中有所介绍。可运行示例:_examples/mocks.http。
记录流量
你可以将应用程序通过 Resterm 代理进行路由,它会将流量捕获到 Resterm .http 文件中,作为请求、模拟或两者兼有。
resterm record --upstream https://api.example.com --out captured.http --mode both
将应用程序的 API 基础 URL 指向 http://127.0.0.1:9000,然后按 Ctrl+C 停止记录。TUI 通过 :record start --upstream <origin> 实现相同功能,另外还有 :record as-request 和 :record as-mock 可将捕获内容插入到打开的文件中。
更多内容见记录参考。
更多
按键
按 ? 查看 Resterm 通用帮助,按 Shift+k 查看光标下内容的帮助。完整表格见 UI 导览。快速开始时,你只需要:
Ctrl+Enter发送请求Tab/Shift+Tab切换窗格g p跳转到响应
文档
docs/resterm.md涵盖请求语法、指令、脚本和传输。docs/cli.md涵盖resterm run、导入器、集合和历史记录。docs/restermscript.md是 RestermScript 参考。- 兼容性列出了在 v1 中保持稳定的内容。
在 TUI 中,:help <topic> 打开嵌入式手册,:docs <topic> 打开已安装版本的网页副本。