
resterm v1.5.6
Cliente de API de terminal para HTTP, GraphQL y gRPC. Archivos .http simples que puedes comparar (diff) y versionar, con workflows, mocks, profiling, tracing, importación de OpenAPI, túneles SSH, port-forwards de Kubernetes, WebSocket, SSE y un ejecutor CLI.
Resterm
Un banco de trabajo de API como código para la terminal.
Vista de trazas y línea de tiempo
Resterm es un cliente de API que almacena las peticiones en archivos .http y .rest de texto plano que pueden convivir en tu repositorio como el resto de tu código. Puedes usar la interfaz de terminal, o ejecutar los mismos archivos en CI con resterm run.
Enlaces rápidos: Capturas de pantalla, Instalación, Inicio rápido, Archivos de peticiones, Documentación.
Capturas de pantalla
Ver la interfaz en acción (haz clic para expandir)
Flujos de trabajo
Profiler
Explain
RestermScript
Por qué Resterm
- Soporte para HTTP, GraphQL, gRPC, WebSocket y SSE.
- Automatización en los archivos de peticiones: condiciones (
@when,@if/@elif/@else,@for-each), flujos de trabajo multipaso (@workflow/@step), capturas, variables y aserciones (@capture,@var,@assert). - Túneles en el archivo de peticiones:
@sshy@k8senrutan una petición a través de un bastión SSH o un port-forward de Kubernetes que Resterm abre y cierra por ti, con perfiles por archivo o por espacio de trabajo. - Registra tráfico HTTP y expórtalo a archivos
.httpde Resterm como peticiones o respuestas simuladas. - RestermScript, un pequeño lenguaje de expresiones creado para Resterm, con hooks de JavaScript cuando los quieras.
- Controles tipo Vim con sugerencias de atajos, ayuda offline con búsqueda,
Shift+kpara la ayuda bajo el cursor,/para buscar y comandos como:w,:q,:helpy:docs. - Autenticación: OAuth 2.0 (client credentials, password, authorization code con PKCE) y
@auth commandpara reutilizar tokens de CLIs que ya tengas instaladas, comogh auth token. - Ejecutor de CLI:
resterm runpara ejecuciones por script y CI, con salida JSON y JUnit. - Servidores mock declarados junto a las peticiones que imitan, con reglas de coincidencia, secuencias, verificación de llamadas y recarga en caliente.
- Trazas de línea de tiempo, profiling y comparación de ejecuciones entre entornos.
- Transcripciones en streaming y una consola interactiva para WebSocket y SSE.
- Sin integración de IA
Instalación
macOS y 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
Desde el código fuente, con Go 1.25 o superior:
go install github.com/unkn0wn-root/resterm/cmd/resterm@latest
[!IMPORTANT] Los binarios precompilados para Linux dependen de glibc 2.32 o superior. En una distribución más antigua, compila desde el código fuente con una cadena de herramientas glibc más reciente o actualiza glibc antes de usar los archivos de las releases.
Las instalaciones de Homebrew se actualizan con brew upgrade resterm. Los binarios de la página de releases o de los scripts de instalación usan resterm --check-update y resterm --update, que descarga, verifica e instala en el mismo lugar. En Windows el binario antiguo se conserva junto al nuevo como resterm.exe.old y se limpia en la siguiente actualización.
Instalación manual
Los binarios para macOS, Linux y Windows (amd64 y arm64) están en la página de releases. Los comandos de abajo hacen lo mismo que descargar manualmente desde la página de releases. La versión de Unix necesita curl y 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"
Inicio rápido
mkdir my-api && cd my-api
resterm init
resterm
resterm init crea un pequeño proyecto que puedes empezar a usar de inmediato. El requests.http generado tiene escenarios mock locales y algunas peticiones que se construyen unas sobre otras, cubriendo aserciones, autenticación bearer, coincidencia JSON, json-rules y @for-each. Pulsa g Shift+m para iniciar el servidor mock, luego Ctrl+Enter para enviar la petición bajo el cursor.
También puedes abrir Resterm directamente sin init. Ejecuta resterm, escribe una URL y pulsa Ctrl+Enter. También puedes pegar un comando curl, eso también funciona.
El mismo archivo se ejecuta sin la TUI:
resterm run --request CreateUser requests.http
Archivos de peticiones
Resterm admite la sintaxis HTTP estándar, pero va mucho más allá con directivas # @ para configuración y automatización:
# @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 }}"}
Colocar @setting antes de la primera petición se aplica a todo el archivo. ### inicia una nueva petición, y las directivas pueden repetir, limitar o comprobar la petición que tienen debajo. Más en _examples/ y la referencia de directivas.
Servidores mock
Las respuestas mock se definen en los mismos archivos que las peticiones (aunque no tienen por qué). Ejemplo, dos escenarios en una ruta:
### 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"}
Sirve un archivo o un directorio completo:
resterm mock ./requests.http
resterm mock --recursive --addr 127.0.0.1:9090 ./requests
La coincidencia por query, cabeceras y cuerpo, las secuencias de respuestas para pruebas de polling, la verificación de llamadas y la recarga en caliente se cubren en la referencia del servidor mock. Ejemplo funcional: _examples/mocks.http.
Registro de tráfico
Puedes enrutar tu aplicación a través del proxy de Resterm y este captura el tráfico en un archivo .http de Resterm, como peticiones, mocks o ambos.
resterm record --upstream https://api.example.com --out captured.http --mode both
Apunta la URL base de la API de tu aplicación a http://127.0.0.1:9000, luego detén la grabación con Ctrl+C. La TUI hace lo mismo con :record start --upstream <origin>, además de :record as-request y :record as-mock para insertar capturas en el archivo abierto.
Más en la referencia de grabación.
Más
| Área | Documentación |
|---|---|
| Automatización | flujos de trabajo, polling y reintentos, comparación de ejecuciones, línea de tiempo y trazas, profiling |
| Transportes | gRPC, GraphQL, WebSocket y SSE |
| Autenticación y conectividad | OAuth 2.0, autenticación desde tu propia CLI, túneles SSH, port-forwards de Kubernetes |
| Scripting | RestermScript, hooks de JavaScript, API headless de Go, resterm-runner |
| Entrada y salida | importación de curl, importación de OpenAPI, compartir colecciones, historial de respuestas y diffing |
| Configuración | entornos y variables, configuración, temas, atajos de teclado |
Teclas
Pulsa ? para la ayuda general de Resterm y Shift+k para la ayuda sobre lo que esté bajo el cursor. La tabla completa está en el recorrido por la interfaz. Para empezar rápido, solo necesitas:
Ctrl+Enterenvía la peticiónTab/Shift+Tabcambia de panelg psalta a la respuesta
Documentación
docs/resterm.mdcubre la sintaxis de peticiones, directivas, scripting y transportes.docs/cli.mdcubreresterm run, los importadores, las colecciones y el historial.docs/restermscript.mdes la referencia de RestermScript.- Compatibilidad enumera lo que se mantiene estable hasta la v1.
Dentro de la TUI, :help <topic> abre el manual integrado y :docs <topic> abre la copia web de la release instalada.