返回更新列表
新发布Sep 5, 2026

resterm v1.5.6

适用于 HTTP、GraphQL 和 gRPC 的终端 API 客户端。使用纯 .http 文件,可进行 diff 和版本管理,支持工作流、模拟、性能分析、追踪、OpenAPI 导入、SSH 隧道、Kubernetes 端口转发、WebSocket、SSE 以及 CLI 运行器。

分享

Resterm
Resterm

面向终端的 API-as-code 工作台。

Resterm TUI 基础界面截图

带时间线的 Resterm 截图
追踪与时间线视图

Resterm 是一款 API 客户端,它将请求存储在纯 .http 和 .rest 文件中,这些文件可以像你的其他代码一样并排存放在仓库中。你可以使用终端 UI,也可以通过 resterm run 在 CI 中运行相同的文件。

快速链接:截图、安装、快速开始、请求文件、文档。

截图

查看 UI 实际效果(点击展开)

工作流

带工作流的 Resterm 截图

性能分析器

Resterm 性能分析器截图

解释

Resterm 解释标签页截图

RestermScript

带 RestermScript 的 Resterm 截图

为什么选择 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 跳转到响应

文档

在 TUI 中,:help <topic> 打开嵌入式手册,:docs <topic> 打开已安装版本的网页副本。

许可证

Apache License 2.0。

分类