Retour aux mises à jour
New releaseSep 5, 2026

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.

Partager

Resterm
Resterm

Un atelier API-as-code pour le terminal.

Capture d'écran de l'interface TUI de base de Resterm

Capture d'écran de Resterm avec la chronologie
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

Capture d'écran de Resterm avec Workflow

Profileur

Capture d'écran du profileur de Resterm

Explain

Capture d'écran de l'onglet Explain de Resterm

RestermScript

Capture d'écran de Resterm avec 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 : @ssh et @k8s acheminent 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 .http Resterm 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+k pour l'aide sous le curseur, / pour la recherche et des commandes comme :w, :q, :help et :docs.
  • Authentification : OAuth 2.0 (client credentials, password, authorization code avec PKCE) et @auth command pour réutiliser les jetons de CLI que vous avez déjà installés, comme gh auth token.
  • Exécuteur CLI : resterm run pour 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

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+Enter envoie la requête
  • Tab / Shift+Tab change de panneau
  • g p saute vers la réponse

Documentation

Dans la TUI, :help <topic> ouvre le manuel intégré et :docs <topic> ouvre la copie web pour la version installée.

Licence

Apache License 2.0.

Catégories