Назад к обновлениям
New releaseSep 5, 2026

resterm v1.5.6

Терминальный API-клиент для HTTP, GraphQL и gRPC. Обычные .http-файлы, которые можно сравнивать и версионировать, с поддержкой workflows, моков, профилирования, трассировки, импорта OpenAPI, SSH-туннелей, проброса портов Kubernetes, WebSocket, SSE и CLI-раннера.

Поделиться

Resterm
Resterm

Рабочая среда API-as-code для терминала.

Скриншот базового TUI Resterm

Скриншот Resterm с временной шкалой
Просмотр трассировки и временной шкалы

Resterm — это API-клиент, который хранит запросы в обычных файлах .http и .rest, лежащих рядом с остальным кодом в вашем репозитории. Вы можете использовать терминальный интерфейс или запускать те же файлы в CI с помощью resterm run.

Быстрые ссылки: Скриншоты, Установка, Быстрый старт, Файлы запросов, Документация.

Скриншоты

Посмотреть интерфейс в действии (нажмите, чтобы развернуть)

Рабочие процессы

Скриншот Resterm с рабочим процессом

Профилировщик

Скриншот профилировщика Resterm

Объяснение

Скриншот вкладки Explain в Resterm

RestermScript

Скриншот Resterm с RestermScript

Почему Resterm

  • Поддержка HTTP, GraphQL, gRPC, WebSocket и SSE.
  • Автоматизация в файлах запросов: условия (@when, @if/@elif/@else, @for-each), многошаговые рабочие процессы (@workflow / @step), захваты, переменные и утверждения (@capture, @var, @assert).
  • Туннели в файле запроса: @ssh и @k8s направляют запрос через SSH-бастион или Kubernetes port-forward, которые Resterm открывает и закрывает за вас, с профилями для файла или рабочей области.
  • Запись HTTP-трафика и экспорт в файлы Resterm .http в виде запросов или мок-ответов.
  • RestermScript — небольшой язык выражений, созданный для Resterm, с хуками JavaScript, когда они нужны.
  • Управление в стиле Vim с подсказками по горячим клавишам, офлайн-справкой с поиском, справкой по Shift+k под курсором, поиском по / и командами вроде :w, :q, :help и :docs.
  • Аутентификация: OAuth 2.0 (client credentials, password, authorization code с PKCE) и @auth command для переиспользования токенов из уже установленных CLI, например gh auth token.
  • CLI-раннер: resterm run для скриптовых запусков и CI с выводом в JSON и JUnit.
  • Мок-серверы, объявленные рядом с запросами, которые они имитируют, с правилами сопоставления, последовательностями, проверкой вызовов и горячей перезагрузкой.
  • Трассировка временной шкалы, профилирование и сравнение запусков между окружениями.
  • Транскрипты потоковой передачи и интерактивная консоль для WebSocket и SSE.
  • Без интеграции с ИИ

Установка

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, чтобы отправить запрос под курсором.

Вы также можете открыть Resterm напрямую без init. Запустите 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

Сопоставление по query, заголовкам и телу, последовательности ответов для тестов опроса, проверка вызовов и горячая перезагрузка описаны в справочнике по мок-серверам. Рабочий пример: _examples/mocks.http.

Запись трафика

Вы можете направить своё приложение через прокси Resterm, и он захватит трафик в файл Resterm .http в виде запросов, моков или и того, и другого.

resterm record --upstream https://api.example.com --out captured.http --mode both

Укажите базовый URL API вашего приложения как http://127.0.0.1:9000, затем остановите запись с помощью Ctrl+C. TUI делает то же самое с помощью :record start --upstream <origin>, а также :record as-request и :record as-mock для вставки захватов в открытый файл.

Больше в справочнике по записи.

Дополнительно

Клавиши

Нажмите ? для общей справки Resterm и Shift+k для справки по тому, что находится под курсором. Полная таблица — в обзоре интерфейса. Для быстрого старта достаточно:

  • 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> открывает веб-версию для установленного релиза.

Лицензия

Apache License 2.0.

Категории