
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.
Resterm
Un workbench API-as-code per il terminale.
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
Profiler
Explain
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:
@sshe@k8sinstradano 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
.httpdi 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+kper la guida sotto il cursore,/per la ricerca e comandi come:w,:q,:helpe:docs. - Autenticazione: OAuth 2.0 (client credentials, password, authorization code con PKCE) e
@auth commandper riutilizzare i token dalle CLI che hai già installato, comegh auth token. - Runner CLI:
resterm runper 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
| Area | Documentazione |
|---|---|
| Automazione | workflow, polling e retry, confronto delle esecuzioni, timeline e tracing, profiling |
| Trasporti | gRPC, GraphQL, WebSocket e SSE |
| Autenticazione e connettività | OAuth 2.0, auth dalla tua CLI, tunnel SSH, port-forward Kubernetes |
| Scripting | RestermScript, hook JavaScript, API Go headless, resterm-runner |
| Input e output | import curl, import OpenAPI, condivisione delle collezioni, cronologia delle risposte e diffing |
| Configurazione | ambienti e variabili, configurazione, temi, scorciatoie da tastiera |
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+Enterinvia la richiestaTab/Shift+Tabcambia pannellog psalta alla risposta
Documentazione
docs/resterm.mdcopre la sintassi delle richieste, le direttive, lo scripting e i trasporti.docs/cli.mdcopreresterm run, gli importer, le collezioni e la cronologia.docs/restermscript.mdè il riferimento di RestermScript.- Compatibilità elenca ciò che rimane stabile fino alla v1.
All'interno della TUI, :help <topic> apre il manuale integrato e :docs <topic> apre la copia web per la release installata.