
resterm v1.5.6
Client API pour terminal pour HTTP, GraphQL et gRPC. De simples fichiers .http que vous pouvez diff et versionner, avec workflows, mocks, profilage, tracing, import OpenAPI, tunnels SSH, redirections de ports Kubernetes, WebSocket, SSE et un exécuteur CLI.
Resterm
Un atelier API-as-code pour le terminal.
Vue trace et chronologie
Resterm est un client API qui stocke les requêtes dans de simples fichiers .http et .rest pouvant cohabiter dans votre dépôt comme le reste de votre code. Vous pouvez utiliser l'interface terminal, ou exécuter les mêmes fichiers en CI avec resterm run.
Liens rapides : Captures d'écran, Installation, Démarrage rapide, Fichiers de requête, Documentation.
Captures d'écran
Voir l'interface en action (cliquez pour développer)
Workflows
Profileur
Explain
RestermScript
Pourquoi Resterm
- Prise en charge de HTTP, GraphQL, gRPC, WebSocket et SSE.
- Automatisation dans les fichiers de requête : conditions (
@when,@if/@elif/@else,@for-each), workflows multi-étapes (@workflow/@step), captures, variables et assertions (@capture,@var,@assert). - Tunnels dans le fichier de requête :
@sshet@k8sacheminent une requête via un bastion SSH ou un port-forward Kubernetes que Resterm ouvre et ferme pour vous, avec des profils par fichier ou par espace de travail. - Enregistrez le trafic HTTP et exportez-le vers des fichiers
.httpResterm sous forme de requêtes ou de réponses mock. - RestermScript, un petit langage d'expression conçu pour Resterm, avec des hooks JavaScript quand vous le souhaitez.
- Commandes de type Vim avec indices de raccourcis, aide hors ligne consultable,
Shift+kpour l'aide sous le curseur,/pour la recherche et des commandes comme:w,:q,:helpet:docs. - Authentification : OAuth 2.0 (client credentials, password, authorization code avec PKCE) et
@auth commandpour réutiliser les jetons de CLI que vous avez déjà installés, commegh auth token. - Exécuteur CLI :
resterm runpour les exécutions scriptées et la CI, avec sortie JSON et JUnit. - Serveurs mock déclarés à côté des requêtes qu'ils imitent, avec règles de correspondance, séquences, vérification des appels et rechargement à chaud.
- Traçage chronologique, profilage et comparaison d'exécutions entre environnements.
- Transcriptions en streaming et console interactive pour WebSocket et SSE.
- Aucune intégration IA
Installation
macOS et 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
Depuis les sources, avec Go 1.25 ou plus récent :
go install github.com/unkn0wn-root/resterm/cmd/resterm@latest
[!IMPORTANT] Les binaires Linux précompilés dépendent de glibc 2.32 ou plus récent. Sur une distribution plus ancienne, compilez depuis les sources avec une chaîne d'outils glibc plus récente ou mettez à jour glibc avant d'utiliser les archives de release.
Les installations Homebrew sont mises à jour avec brew upgrade resterm. Les binaires de la page des releases ou des scripts d'installation utilisent resterm --check-update et resterm --update, qui télécharge, vérifie et installe sur place. Sous Windows, l'ancien binaire reste à côté du nouveau sous le nom resterm.exe.old et est nettoyé lors de la prochaine mise à jour.
Installation manuelle
Les binaires pour macOS, Linux et Windows (amd64 et arm64) sont sur la page des releases. Les commandes ci-dessous font la même chose que télécharger manuellement depuis la page des releases. La version Unix nécessite curl et 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"
Démarrage rapide
mkdir my-api && cd my-api
resterm init
resterm
resterm init crée un petit projet que vous pouvez utiliser immédiatement. Le fichier requests.http généré contient des scénarios mock locaux et quelques requêtes qui s'enchaînent, couvrant les assertions, l'authentification bearer, le matching JSON, json-rules et @for-each. Appuyez sur g Shift+m pour démarrer le serveur mock, puis Ctrl+Enter pour envoyer la requête sous le curseur.
Vous pouvez aussi ouvrir Resterm directement sans init. Lancez resterm, saisissez une URL et appuyez sur Ctrl+Enter. Vous pouvez également coller une commande curl - cela fonctionne aussi.
Le même fichier s'exécute sans la TUI :
resterm run --request CreateUser requests.http
Fichiers de requête
Resterm prend en charge la syntaxe HTTP standard, mais va bien au-delà avec des directives # @ pour la configuration et l'automatisation :
# @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 }}"}
Placer @setting avant la première requête s'applique à tout le fichier. ### démarre une nouvelle requête, et les directives peuvent répéter, limiter ou vérifier la requête en dessous. Plus d'exemples dans _examples/ et la référence des directives.
Serveurs mock
Les réponses mock sont définies dans les mêmes fichiers que les requêtes (mais ce n'est pas obligatoire). Exemple, deux scénarios sur une même 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"}
Servez un fichier ou tout un répertoire :
resterm mock ./requests.http
resterm mock --recursive --addr 127.0.0.1:9090 ./requests
Le matching sur query, headers et body, les séquences de réponses pour les tests de polling, la vérification des appels et le rechargement à chaud sont couverts dans la référence du serveur mock. Exemple fonctionnel : _examples/mocks.http.
Enregistrement du trafic
Vous pouvez router votre application à travers le proxy Resterm et il capture le trafic dans un fichier .http Resterm, sous forme de requêtes, de mocks ou les deux.
resterm record --upstream https://api.example.com --out captured.http --mode both
Faites pointer l'URL de base de l'API de votre application vers http://127.0.0.1:9000, puis arrêtez l'enregistrement avec Ctrl+C. La TUI fait la même chose avec :record start --upstream <origin>, plus :record as-request et :record as-mock pour insérer les captures dans le fichier ouvert.
Plus d'informations dans la référence d'enregistrement.
Plus
| Domaine | Docs |
|---|---|
| Automatisation | workflows, polling et retries, comparaison d'exécutions, chronologie et traçage, profilage |
| Transports | gRPC, GraphQL, WebSocket et SSE |
| Authentification et connectivité | OAuth 2.0, authentification depuis votre propre CLI, tunnels SSH, port-forwards Kubernetes |
| Scripting | RestermScript, hooks JavaScript, API Go headless, resterm-runner |
| Entrées et sorties | import curl, import OpenAPI, partage de collections, historique et diff des réponses |
| Configuration | environnements et variables, configuration, thèmes, raccourcis clavier |
Raccourcis
Appuyez sur ? pour l'aide générale de Resterm et Shift+k pour l'aide sur l'élément sous le curseur. Le tableau complet est dans la visite de l'interface. Pour un démarrage rapide, vous n'avez besoin que de :
Ctrl+Enterenvoie la requêteTab/Shift+Tabchange de panneaug psaute vers la réponse
Documentation
docs/resterm.mdcouvre la syntaxe des requêtes, les directives, le scripting et les transports.docs/cli.mdcouvreresterm run, les importateurs, les collections et l'historique.docs/restermscript.mdest la référence de RestermScript.- Compatibilité liste ce qui reste stable jusqu'à la v1.
Dans la TUI, :help <topic> ouvre le manuel intégré et :docs <topic> ouvre la copie web pour la version installée.