
resterm v1.5.6
Терминальный API-клиент для HTTP, GraphQL и gRPC. Обычные .http-файлы, которые можно сравнивать и версионировать, с поддержкой workflows, моков, профилирования, трассировки, импорта OpenAPI, SSH-туннелей, проброса портов Kubernetes, WebSocket, SSE и CLI-раннера.
Resterm
Рабочая среда API-as-code для терминала.
Просмотр трассировки и временной шкалы
Resterm — это API-клиент, который хранит запросы в обычных файлах .http и .rest, лежащих рядом с остальным кодом в вашем репозитории. Вы можете использовать терминальный интерфейс или запускать те же файлы в CI с помощью resterm run.
Быстрые ссылки: Скриншоты, Установка, Быстрый старт, Файлы запросов, Документация.
Скриншоты
Посмотреть интерфейс в действии (нажмите, чтобы развернуть)
Рабочие процессы
Профилировщик
Объяснение
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 для вставки захватов в открытый файл.
Больше в справочнике по записи.
Дополнительно
| Область | Документация |
|---|---|
| Автоматизация | рабочие процессы, опрос и повторные попытки, сравнение запусков, временная шкала и трассировка, профилирование |
| Транспорты | gRPC, GraphQL, WebSocket и SSE |
| Аутентификация и подключение | OAuth 2.0, аутентификация из вашего CLI, SSH-туннели, Kubernetes port-forward |
| Скриптинг | RestermScript, хуки JavaScript, headless Go API, resterm-runner |
| Импорт и экспорт | импорт curl, импорт OpenAPI, обмен коллекциями, история ответов и сравнение |
| Настройка | окружения и переменные, конфигурация, темы, привязки клавиш |
Клавиши
Нажмите ? для общей справки 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> открывает веб-версию для установленного релиза.