Torna agli aggiornamenti
New releaseSep 5, 2026

resterm v1.5.6

Client API da terminale per HTTP, GraphQL e gRPC. File .http semplici che puoi confrontare e versionare, con workflow, mock, profilazione, tracing, import OpenAPI, tunnel SSH, port-forward Kubernetes, WebSocket, SSE e un runner CLI.

Condividi

Resterm
Resterm

Un workbench API-as-code per il terminale.

Screenshot of Resterm TUI base

Screenshot of Resterm with timeline
Vista trace e timeline

Resterm è un client API che memorizza le richieste in file .http e .rest in testo semplice, che possono convivere nel tuo repository come il resto del tuo codice. Puoi usare l'interfaccia terminale, oppure eseguire gli stessi file in CI con resterm run.

Link rapidi: Screenshot, Installazione, Avvio rapido, File di richiesta, Documentazione.

Screenshot

Guarda l'interfaccia in azione (clicca per espandere)

Workflow

Screenshot of Resterm with Workflow

Profiler

Screenshot of Resterm profiler

Explain

Screenshot of Resterm Explain Tab

RestermScript

Screenshot of Resterm with RestermScript

Perché Resterm

  • Supporto HTTP, GraphQL, gRPC, WebSocket e SSE.
  • Automazione nei file di richiesta: condizioni (@when, @if/@elif/@else, @for-each), workflow multi-step (@workflow / @step), catture, variabili e asserzioni (@capture, @var, @assert).
  • Tunnel nel file di richiesta: @ssh e @k8s instradano una richiesta attraverso un bastion SSH o un port-forward Kubernetes che Resterm apre e chiude per te, con profili per file o workspace.
  • Registra il traffico HTTP ed esportalo in file .http di Resterm come richieste o risposte mock.
  • RestermScript, un piccolo linguaggio di espressioni creato per Resterm, con hook JavaScript quando li vuoi.
  • Controlli in stile Vim con suggerimenti delle scorciatoie, guida offline ricercabile, Shift+k per la guida sotto il cursore, / per la ricerca e comandi come :w, :q, :help e :docs.
  • Autenticazione: OAuth 2.0 (client credentials, password, authorization code con PKCE) e @auth command per riutilizzare i token dalle CLI che hai già installato, come gh auth token.
  • Runner CLI: resterm run per esecuzioni scriptate e CI, con output JSON e JUnit.
  • Server mock dichiarati accanto alle richieste che imitano, con regole di matching, sequenze, verifica delle chiamate e hot reload.
  • Tracing timeline, profiling e confronto delle esecuzioni tra ambienti.
  • Trascrizioni in streaming e una console interattiva per WebSocket e SSE.
  • Nessuna integrazione AI

Installazione

macOS e 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

Dai sorgenti, con Go 1.25 o superiore:

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

[!IMPORTANT] I binari Linux precompilati dipendono da glibc 2.32 o superiore. Su una distribuzione più vecchia, compila dai sorgenti con una toolchain glibc più recente oppure aggiorna glibc prima di usare gli archivi di release.

Le installazioni Homebrew si aggiornano con brew upgrade resterm. I binari dalla pagina delle release o dagli script di installazione usano resterm --check-update e resterm --update, che scarica, verifica e installa sul posto. Su Windows il vecchio binario rimane accanto a quello nuovo come resterm.exe.old e viene rimosso al successivo aggiornamento.

Installazione manuale

I binari per macOS, Linux e Windows (amd64 e arm64) sono sulla pagina delle release. I comandi seguenti fanno la stessa cosa di scaricare manualmente dalla pagina delle release. La versione Unix richiede curl e 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"

Avvio rapido

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

resterm init crea un piccolo progetto che puoi iniziare a usare subito. Il file requests.http generato contiene scenari mock locali e alcune richieste che si basano l'una sull'altra, coprendo asserzioni, bearer auth, matching JSON, json-rules e @for-each. Premi g Shift+m per avviare il server mock, poi Ctrl+Enter per inviare la richiesta sotto il cursore.

Puoi anche aprire Resterm direttamente senza init. Esegui resterm, digita un URL e premi Ctrl+Enter. Puoi anche incollare un comando curl - funziona anche quello.

Lo stesso file viene eseguito senza la TUI:

resterm run --request CreateUser requests.http

File di richiesta

Resterm supporta la sintassi HTTP standard, ma va ben oltre con le direttive # @ per configurazione e automazione:

# @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 }}"}

Posizionare @setting prima della prima richiesta si applica all'intero file. ### avvia una nuova richiesta, e le direttive possono ripetere, limitare o verificare la richiesta sotto di esse. Maggiori informazioni in _examples/ e nel riferimento delle direttive.

Server mock

Le risposte mock sono definite negli stessi file delle richieste (ma non devono esserlo per forza). Esempio, due scenari su una route:

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

Servi un singolo file o un'intera directory:

resterm mock ./requests.http
resterm mock --recursive --addr 127.0.0.1:9090 ./requests

Il matching su query, header e body, le sequenze di risposte per i test di polling, la verifica delle chiamate e l'hot reload sono trattati nel riferimento del server mock. Esempio funzionante: _examples/mocks.http.

Registrazione del traffico

Puoi instradare la tua applicazione attraverso il proxy di Resterm e questo cattura il traffico in un file .http di Resterm, come richieste, mock o entrambi.

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

Punta l'URL base delle API della tua applicazione su http://127.0.0.1:9000, poi interrompi la registrazione con Ctrl+C. La TUI fa la stessa cosa con :record start --upstream <origin>, più :record as-request e :record as-mock per inserire le catture nel file aperto.

Maggiori informazioni nel riferimento della registrazione.

Altro

Tasti

Premi ? per la guida generale di Resterm e Shift+k per la guida su qualunque cosa sia sotto il cursore. La tabella completa è nella panoramica dell'interfaccia. Per l'avvio rapido, ti servono solo:

  • Ctrl+Enter invia la richiesta
  • Tab / Shift+Tab cambia pannello
  • g p salta alla risposta

Documentazione

All'interno della TUI, :help <topic> apre il manuale integrato e :docs <topic> apre la copia web per la release installata.

Licenza

Apache License 2.0.

Categorie