返回更新列表
新发布Aug 6, 2026

resterm v0.51.3

适用于 HTTP/GraphQL/gRPC 的终端 API 客户端,支持 SSH 隧道、WebSockets、SSE、工作流、性能分析、OpenAPI、Kubernetes 端口转发、CLI 和 Mock。

分享

Resterm
Resterm

面向 REST、GraphQL、gRPC、WebSocket 和 SSE 的终端原生 API 客户端与工作台。

Resterm TUI 基础界面截图

Resterm 是一个 API 即代码(API-as-code) 工作台——用更熟悉的说法,就是 API 客户端——围绕纯文本的 .http.rest 文件构建,你可以对它们进行 diff、审查和版本管理。它将交互式请求编辑与声明式工作流、断言、模拟服务器、追踪、性能分析和无头自动化结合在一起。所有内容都保留在你的机器上。无需账户、无云同步、无遥测。

如果你在寻找一款以 GUI 集合为中心的 Postman 风格客户端,Resterm 可能 不适合 你,但还是试试看吧!

[!NOTE] Resterm 现已发布 v1!请查看 v1.0.0 发布说明 了解新功能和破坏性变更。

快速链接:截图安装快速开始文档

截图导览

查看实际运行中的界面(点击展开)

工作流

Resterm 工作流界面截图

追踪与时间线

Resterm 时间线界面截图

性能分析器

Resterm 性能分析器界面截图

Explain

Resterm Explain 标签页截图

RestermScript

Resterm RestermScript 界面截图

浅色主题

Resterm 浅色主题界面截图

OAuth 浏览器演示(旧版界面设计)

Resterm OAuth 流程

为什么选择 Resterm

  • HTTP、GraphQL、gRPC、WebSocket 和 SSE 开箱即用。

  • 自动化内置于请求文件中: 条件(@when@if/@elif/@else@for-each)、多步骤工作流(@workflow / @step)、捕获、变量与断言(@capture@var@assert)。

  • RestermScript,一种专为 Resterm 打造的小型表达式语言,并在需要时提供 JavaScript 钩子。

  • Vim 风格操作,带上下文底部栏提示、可搜索的离线帮助、光标下的 K 帮助、/ 搜索以及 :w:q:help:docs 等命令。

  • 内置认证与隧道: OAuth 2.0(客户端凭证、密码、带 PKCE 的授权码)、由你现有 CLI 支持的认证、SSH 隧道和 Kubernetes 端口转发。无需额外工具。

  • CLI 运行器: resterm run 用于脚本化运行和 CI,支持 JSON 和 JUnit 输出。

  • 模拟服务器 在与所模仿请求相邻的位置声明,支持匹配规则、序列、调用验证和热重载。

  • 跨环境的时间线追踪、性能分析与运行对比。

  • 流式传输记录 以及用于 WebSocket 和 SSE 的交互式控制台。

  • 绝不集成 AI。

快速开始

  1. 安装 Resterm(脚本、Windows 和手动安装请参阅 安装)。

    brew install resterm
    
  2. 初始化一个工作区。

    mkdir my-api && cd my-api
    resterm init
    

    resterm init 会为你生成一个无需联网即可运行的小型项目。生成的 requests.http 包含本地模拟场景和几个彼此衔接的请求,涵盖了断言、Bearer 认证、JSON 匹配、json-rules@for-each

  3. 启动它并发送你的第一个请求。

    resterm
    

    在编辑器中按 Ctrl+Enter 发送高亮的请求。

还没有文件?直接运行 resterm,输入 URL 并按 Ctrl+Enter 即可。粘贴 curl 命令也同样有效。

CLI

resterm run 在不开 TUI 的情况下执行 .http / .rest 文件,这正是 CI 所用的方式。

resterm run --request CreateUser requests.http

生成的项目会与本地模拟服务器通信。请先在另一个终端中启动它:

resterm mock requests.http

在 TUI 中,按 g Shift+M 也可以从工作区启动同一个模拟服务器。

CLI 文档 涵盖了选择器、输出格式和更多示例。

模拟服务器

存放请求的同一批文件也可以提供 HTTP 模拟服务。

  • 按查询参数、请求头或 JSON 请求体匹配传入请求,然后选择命名或默认响应。
  • 使用响应序列对轮询和重试流程建模,支持按资源或调用方维护独立的游标。
  • 按固定时长延迟响应,或使用 randomnormaljitter 为每个请求提供不同的延迟。
  • 根据路径、查询参数、请求头和请求体值构建响应,并带有动态数据生成器。
  • 使用 @expect 验证调用次数,或从 RestermScript 检查收到的流量。
  • 热重载源文件和 fixtures,可选启用 TLS。

同一条路由上的两个场景:

### 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

更多内容请参阅 模拟服务器参考resterm mock CLI 指南可运行示例

Headless(无头模式)

headless 包是驱动 TUI 和 CLI 的同一引擎的公共 Go API。你可以用它从自己的 Go 代码或 CI 中运行请求、工作流、断言、运行对比和性能分析。

如果你不想自己构建运行器,可以使用 resterm-runner

键盘快捷键速查表

  • 窗格焦点与布局
    • Tab / Shift+Tab:在侧边栏、编辑器和响应之间切换。
    • g+rg+ig+p:跳转到请求、编辑器或响应。
    • g+h / g+l:水平调整大小。侧边栏聚焦时改变其宽度,否则调整编辑器/响应分栏。
    • g+j / g+k:编辑器/响应上下堆叠时调整高度,在导航器中折叠或展开分支。
    • g+v / g+s:在并排和堆叠布局之间切换响应窗格。
    • g+1g+2g+3:最小化或恢复侧边栏、编辑器、响应。
    • g+z / g+Z:放大聚焦的窗格,清除放大。
  • 环境与全局变量
    • Ctrl+E:切换环境。
    • Ctrl+G:查看捕获的全局变量。
  • 帮助与命令
    • ?:打开可搜索的离线帮助索引。
    • K(编辑器普通模式):打开光标所指指令、模板或关键字的帮助。
    • :help <topic> / :man <topic>:打开内置主题;:docs <topic> 打开与版本匹配的完整手册。
    • Ctrl+O:打开文件/工作区弹出窗口。输入以过滤,用 Up / Down 滚动,用 Tab 进入子目录。
    • ::打开命令行。用 Up / Down 选择建议,Tab 补全一个,或 Enter 接受并运行所选内容。:mock start --source:edit 等路径参数会在同一个弹出窗口中浏览文件系统。
  • 响应
    • Ctrl+V / Ctrl+U:拆分响应窗格以进行并排比较。
    • Ctrl+Shift+Cg y(响应聚焦时):复制整个 Pretty、Raw 或 Headers 标签页。
    • g x:在不发送的情况下显示当前请求的 Explain 预览。
    • g e:在外部编辑器中打开当前文件。

[!TIP] 如果你只记得三个快捷键:

  • Ctrl+Enter 发送请求
  • Tab / Shift+Tab 切换窗格
  • g+p 跳转到响应

安装

Linux / macOS(Homebrew)

brew install resterm

[!NOTE] 通过 Homebrew 安装的版本应使用 Homebrew 更新(brew upgrade resterm)。内置的 resterm --update 命令适用于从 GitHub releases 或安装脚本安装的二进制文件。

Linux / macOS(Shell 脚本)

[!IMPORTANT] 预编译的 Linux 二进制文件依赖 glibc 2.32 或更高版本。在较旧的发行版上,请使用较新的 glibc 工具链从源码构建,或在使用发布压缩包前升级 glibc。

curl -fsSL https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.sh | bash

或使用 wget

wget -qO- https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.sh | bash

Windows(PowerShell)

iwr -useb https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.ps1 | iex

这些脚本会检测你的系统架构,下载最新版本并安装二进制文件。

手动安装

[!NOTE] 手动安装辅助脚本使用 curljq。请用你的包管理器安装 jqbrew install jqsudo apt install jq 等)。

Linux / macOS

# Detect latest 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)"

# Make it executable and move it onto your PATH
chmod +x resterm
sudo install -m 0755 resterm /usr/local/bin/resterm

Windows(PowerShell)

$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 relocate to a directory on PATH, e.g.:
Move-Item resterm.exe "$env:USERPROFILE\bin\resterm.exe"

从源码构建

go install github.com/unkn0wn-root/resterm/cmd/resterm@latest

更新

resterm --check-update
resterm --update

第一个命令报告是否有更新版本可用。第二个命令下载、验证并就地安装。在 Windows 上,旧二进制文件会以 resterm.exe.old 保留在新文件旁边,并在下次更新时清理。

配置

  • 环境是 JSON 文件(resterm.env.json),会在请求目录、工作区根目录或当前工作目录(CWD)中被发现。一个文件可以定义命名环境或独立分组(例如 api、app 和 credentials),它们会合并为一个环境。Dotenv 文件(.env.env.*)通过 --env-file 选择启用,且仅限单个工作区。请参阅 分组环境_examples/grouped/ 中的可运行示例。
  • 配置按操作系统存储,并可通过 RESTERM_CONFIG_DIR 覆盖:
    • macOS: ~/Library/Application Support/resterm
    • Windows: %APPDATA%\resterm
    • Linux/Unix: ~/.config/resterm

集合

将工作区导出为对 Git 友好的捆绑包,并导入到另一个工作区。捆绑包带有包含校验和的 manifest.json,因此导入会先验证文件完整性。环境值会以 REPLACE_ME 占位符的形式导出,因此机密永远不会离开你的机器。

resterm collection export --workspace ./my-api --out ./shared/my-api-bundle
resterm collection import --in ./shared/my-api-bundle --workspace ./my-local-api

添加 --dry-run 可预览导入,--force 可覆盖现有文件。文档:集合共享

Curl 导入

将 curl 命令粘贴到编辑器中并按 Ctrl+Enter,即可将其转换为结构化请求。Resterm 能理解常见参数、合并重复的数据段并保持 multipart 上传完整。sudo$ 等 Shell 前缀会被忽略。CLI 也可通过 --from-curl 进行同样的转换。

如下:

curl -X POST https://api.example.com/login \
  -H "Content-Type: application/json" \
  --user demo:secret \
  -d '{"user":"demo"}'

会变成这样:

### POST https://api.example.com/login
# @auth basic demo secret
POST https://api.example.com/login
Content-Type: application/json

{"user":"demo"}

文档:内联请求导入示例

RestermScript

RestermScript(RTS)是一种专为 Resterm 打造的小型表达式语言。它直接面向请求格式、工作流和指令,让脚本保持简短且可预测。当你需要更多能力时,仍可使用 JavaScript 钩子。

快速示例(RTS 模块 + 请求):

// rts/helpers.rts
module helpers
export fn authHeader(token) {
  return token ? "Bearer " + token : ""
}
# @use ./rts/helpers.rts
# @when env.has("feature")
# @assert response.statusCode == 200
GET https://api.example.com/users/{{= vars.get("user") }}
Authorization: {{= helpers.authHeader(vars.get("auth.token")) }}

完整参考:docs/restermscript.md

深入探讨

OAuth 2.0

支持客户端凭证、密码授权和带 PKCE 的授权码。对于授权码流程,Resterm 会打开你的浏览器,在 127.0.0.1 上运行本地回调服务器,捕获重定向并兑换授权码。令牌按环境缓存,并在过期时刷新。文档:docs/resterm.md#oauth-20-directive_examples/oauth2.http

工作流与脚本

使用 @workflow@step 串联请求,在步骤之间传递数据,并在需要时添加 JS 钩子。文档与示例:docs/resterm.md#workflows_examples/workflows.http

运行对比

使用 @compare--compare 跨环境运行同一请求,然后用 g+c 并排比较响应差异。文档:docs/resterm.md#compare-runs

追踪与时间线

添加带预算的 @trace 以捕获 DNS、连接、TLS、TTFB 和传输耗时。Resterm 会高亮超出预算的部分,并可将 span 导出到 OpenTelemetry。文档:docs/resterm.md#timeline--tracing

流式传输(WebSocket 和 SSE)

使用带 @ws 步骤的 @websocket@sse 来编写和记录流。Stream 标签页会保留传输记录,并包含一个交互式控制台。文档:docs/resterm.md#streaming-sse--websocket

gRPC

支持一元和流式调用,带传输记录、元数据和请求体展开。文档:docs/resterm.md#grpc

OpenAPI 导入

使用 --from-openapi 将 OpenAPI 3 规范转换为 .http 集合,来源可以是本地文件或 http(s) URL。使用 --openapi-mode requestsmocksboth 选择生成的块。远程获取遵循全局 --insecure--proxy 标志。文档:docs/cli.md#import-examples

SSH 隧道

使用 @ssh 配置将 HTTP、gRPC、WebSocket 和 SSE 流量通过堡垒机路由。文档:docs/resterm.md#ssh-tunnels_examples/ssh.http

Kubernetes 端口转发

同样的思路,使用 @k8s 配置,目标可以是 pod、service、deployment 或 statefulset。文档:docs/resterm.md#kubernetes-port-forwards_examples/k8s.http

主题与按键绑定

使用配置目录中的 themes/*.toml 以及 bindings.tomlbindings.json 自定义颜色和按键绑定。文档:docs/resterm.md#themingdocs/resterm.md#custom-bindings

文档

  • docs/resterm.md 涵盖请求语法、指令、脚本和传输协议。
  • docs/cli.md 涵盖 resterm run、导入器、集合和历史记录。
  • 兼容性 说明了 Resterm 对 v1 的兼容性保证。

在 TUI 中,按 ? 或运行 :help。当你想查看已安装版本的完整网页手册时,使用 :docs

许可证

Apache License 2.0.

分类