Zum Inhalt springen

Hoppscotch

Open-Source-API-Entwicklungsökosystem und leichtgewichtige Alternative zu Postman zum Testen von REST-, GraphQL-, WebSocket- und Echtzeit-APIs.

BefehlBeschreibung
Zu hoppscotch.io navigierenHoppscotch Web-App öffnen (keine Installation nötig)
Von hoppscotch.io/download herunterladenDesktop-App installieren (macOS, Windows, Linux)
Mit GitHub, Google oder E-Mail anmeldenKonto für Team-Synchronisierung erstellen
Browser-PWA-InstallationsoptionAls Progressive Web App installieren
BefehlBeschreibung
npm install -g @hoppscotch/cliCLI global mit npm installieren
npx @hoppscotch/cliCLI ohne Installation ausführen
hopp --versionCLI-Version anzeigen
hopp --helpCLI-Hilfe anzeigen
BefehlBeschreibung
docker pull hoppscotch/hoppscotchDocker-Image herunterladen
docker compose up -dSelbst gehostete Instanz starten
# docker-compose.yml für selbst gehostetes Hoppscotch
version: "3"
services:
  hoppscotch:
    image: hoppscotch/hoppscotch:latest
    ports:
      - "3000:3000"   # Web UI
      - "3100:3100"   # Admin-Dashboard
      - "3170:3170"   # Backend-API
    environment:
      DATABASE_URL: postgresql://user:pass@db:5432/hoppscotch
      JWT_SECRET: your-jwt-secret-here
      TOKEN_SALT_COMPLEXITY: 10
      MAGIC_LINK_TOKEN_VALIDITY: 3
      REFRESH_TOKEN_VALIDITY: 604800000
      ACCESS_TOKEN_VALIDITY: 86400000
      VITE_ALLOWED_AUTH_PROVIDERS: GITHUB,GOOGLE,EMAIL
    depends_on:
      - db

  db:
    image: postgres:15
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: hoppscotch

volumes:
  postgres_data:
BefehlBeschreibung
Methode auswählen (GET, POST, PUT, DELETE, PATCH)HTTP-Methode aus Dropdown wählen
URL in die Adressleiste eingebenAnfrage-Endpunkt festlegen
Auf “Send” klickenAnfrage ausführen
Ctrl + EnterAnfrage senden (Tastenkürzel)
Ctrl + GAnfrage senden und Antwort herunterladen
Ctrl + KBefehlspalette öffnen
BefehlBeschreibung
Auf “Body”-Tab klicken → Typ auswählenFormat des Anfragekörpers festlegen
”application/json” auswählenJSON-Körper (am häufigsten)
“multipart/form-data” auswählenDatei-Uploads
”application/x-www-form-urlencoded” auswählenFormulardaten
”text/plain” auswählenRoher Textkörper
”application/xml” auswählenXML-Körper
”Binary” auswählenRohe Binärdaten
BefehlBeschreibung
Auf “Headers”-Tab klicken → Header hinzufügenBenutzerdefinierte Anfrage-Header hinzufügen
Auf “Parameters”-Tab klickenURL-Abfrageparameter hinzufügen
Massenbearbeitungsmodus für HeaderMehrere Header auf einmal einfügen
Header aktiv/inaktiv umschaltenDeaktivieren ohne zu löschen
<<variable>> in Werten verwendenUmgebungsvariablen referenzieren
BefehlBeschreibung
Antwortkörper anzeigenJSON, HTML, XML, Binär, Bild
Auf “Headers”-Tab der Antwort klickenAntwort-Header inspizieren
Statuscode und Zeit angezeigtHTTP-Status, Latenz, Größe
Auf “Copy” bei Antwort klickenAntwort in Zwischenablage kopieren
Auf “Download” klickenAntwort als Datei herunterladen
JSON-Antwort automatisch formatiertEinklappbare Baumansicht
Auf “Timeline” klickenAnfrage-/Antwort-Timeline anzeigen
Method:  POST
URL:     https://api.example.com/users
Headers:
  Content-Type: application/json
  Authorization: Bearer <<auth_token>>

Body (JSON):
{
  "name": "Alice Smith",
  "email": "alice@example.com",
  "role": "admin"
}

Response: 201 Created (145ms, 234 B)
{
  "id": 42,
  "name": "Alice Smith",
  "email": "alice@example.com",
  "role": "admin",
  "created_at": "2024-01-15T10:30:00Z"
}
BefehlBeschreibung
Auf ”+” im Sammlungs-Panel klickenNeue Sammlung erstellen
Rechtsklick auf Sammlung → “New Request”Anfrage zur Sammlung hinzufügen
Rechtsklick auf Sammlung → “New Folder”Mit Unterordnern organisieren
Anfragen zwischen Ordnern ziehenSammlungselemente neu ordnen
Rechtsklick → “Duplicate”Sammlung klonen
Rechtsklick → “Properties”Sammlungseinstellungen bearbeiten
Rechtsklick → “Delete”Sammlung entfernen
Ctrl + Shift + PIn Sammlungen suchen
BefehlBeschreibung
Auf “Import” klicken → Datei auswählenSammlung importieren
Rechtsklick → “Export”Sammlung als JSON exportieren
Import aus Postman Collection v2Postman-Kompatibilität
Import aus OpenAPI/Swagger-SpezifikationAnfragen automatisch generieren
Import aus InsomniaInsomnia-Kompatibilität
Import aus cURLcURL-Befehl einfügen
Import aus HARHTTP-Archiv importieren
Unterstützte Importformate:
  - Hoppscotch Collection (natives JSON)
  - Postman Collection v2
  - OpenAPI 3.0 / Swagger 2.0
  - Insomnia v4
  - cURL-Befehle
  - HAR (HTTP Archive)

Import aus cURL:
  Einen cURL-Befehl direkt in die URL-Leiste einfügen
  Hoppscotch parst automatisch Methode, Header, Body und URL
BefehlBeschreibung
Auf “Environments” in der Seitenleiste klickenUmgebungsverwaltung öffnen
Auf ”+” klicken um Umgebung zu erstellenNeue Umgebung erstellen
key: value Paare hinzufügenVariablen definieren
<<variable_name>> in Anfragen verwendenVariable in jedem Feld referenzieren
Umgebung aus Dropdown auswählenUmgebung aktivieren
Auf “Global”-Tab klickenGlobale Variablen setzen (immer aktiv)
Rechtsklick → “Export”Umgebung als JSON exportieren
Rechtsklick → “Duplicate”Umgebung klonen
TypBeschreibung
Reguläre VariableSichtbar in UI, in Sammlungen exportiert
Geheime VariableIn UI maskiert, nicht exportiert
Globale VariableIn allen Umgebungen verfügbar
UmgebungsvariableNur verfügbar wenn Umgebung aktiv ist
Umgebung: "Production"
┌───────────────┬──────────────────────────────┬──────────┐
│ Schlüssel     │ Wert                         │ Typ      │
├───────────────┼──────────────────────────────┼──────────┤
│ base_url      │ https://api.example.com      │ Regulär  │
│ api_version   │ v2                           │ Regulär  │
│ auth_token    │ eyJhbGciOiJIUzI1NiIsIn...    │ Geheim   │
│ timeout       │ 30000                        │ Regulär  │
└───────────────┴──────────────────────────────┴──────────┘

Verwendung in Anfragen:
  URL:    <<base_url>>/<<api_version>>/users
  Header: Authorization: Bearer <<auth_token>>
BefehlBeschreibung
”Bearer Token” auswählenBearer-Token-Authentifizierung hinzufügen
”Basic Auth” auswählenBenutzername/Passwort-Authentifizierung
”OAuth 2.0” auswählenOAuth 2.0-Flow konfigurieren
”API Key” auswählenAPI-Key zu Header oder Query-Parameter hinzufügen
”AWS Signature” auswählenAWS Signature V4-Authentifizierung
”Inherit from parent” auswählenAuthentifizierung von Sammlung erben
”None” auswählenAuthentifizierung entfernen
Token-Felder unterstützen <<variables>>Umgebungsvariablen in Auth-Tokens verwenden
OAuth 2.0-Konfiguration:
  Grant Type:       Authorization Code
  Auth URL:         https://auth.example.com/authorize
  Token URL:        https://auth.example.com/token
  Client ID:        <<client_id>>
  Client Secret:    <<client_secret>>
  Scope:            read write
  Redirect URI:     Automatisch konfiguriert

Unterstützte Grant Types:
  - Authorization Code (+ PKCE)
  - Client Credentials
  - Implicit
  - Password Credentials
BefehlBeschreibung
Auf “Realtime” → “WebSocket” klickenWebSocket-Client öffnen
wss://-URL eingebenWebSocket-Endpunkt festlegen
Auf “Connect” klickenVerbindung herstellen
Nachricht eingeben → auf “Send” klickenNachricht an Server senden
Nachrichten im Log-Panel anzeigenEingehende/ausgehende Nachrichten überwachen
Auf “Disconnect” klickenVerbindung schließen
Protokolle/Header hinzufügenVerbindungsparameter konfigurieren
BefehlBeschreibung
Auf “Realtime” → “SSE” klickenServer-Sent Events testen
SSE-Endpunkt-URL eingebenEvent-Stream-URL festlegen
Auf “Connect” klickenEmpfang von Events starten
Events in Echtzeit protokolliertEvent-Stream überwachen
Auf “Disconnect” klickenEmpfang stoppen
BefehlBeschreibung
Auf “Realtime” → “MQTT” klickenMQTT-Verbindungen testen
mqtt:// oder wss://-URL eingebenMQTT-Broker-URL festlegen
Client ID, Benutzername, Passwort festlegenAnmeldedaten konfigurieren
Topics abonnierenAuf Nachrichten lauschen
An Topics veröffentlichenNachrichten senden
BefehlBeschreibung
Auf “Realtime” → “Socket.IO” klickenSocket.IO-Verbindungen testen
Server-URL eingebenSocket.IO-Endpunkt festlegen
Auf Events lauschenBenannte Events abonnieren
Events mit Daten sendenBenannte Events senden
Verbindungsstatus anzeigenVerbinden/Trennen überwachen
BefehlBeschreibung
Auf “GraphQL”-Tab klickenZum GraphQL-Modus wechseln
GraphQL-Endpunkt-URL eingebenGraphQL-Server-URL festlegen
Abfrage im Editor-Panel schreibenGraphQL-Abfrage erstellen
Auf “Schema” klicken um Schema zu ladenServer-Schema für Autovervollständigung laden
Variablen im Variablen-Panel hinzufügenAbfragevariablen als JSON festlegen
Header für Authentifizierung hinzufügenAuth-Header festlegen
Auf “Run” oder Ctrl + Enter klickenAbfrage ausführen
Autovervollständigung aus Schema verwendenFeldvorschläge erhalten
Endpoint: https://api.example.com/graphql

Query:
  query GetUsers($limit: Int!) {
    users(limit: $limit) {
      id
      name
      email
      posts {
        title
        createdAt
      }
    }
  }

Variables:
  {
    "limit": 10
  }

Headers:
  Authorization: Bearer <<auth_token>>
BefehlBeschreibung
hopp test collection.jsonSammlungstests ausführen
hopp test collection.json -e environment.jsonMit Umgebung ausführen
hopp test collection.json --delay 500Verzögerung zwischen Anfragen (ms)
hopp test collection.json --reporter junitJUnit-Testbericht-Ausgabe
hopp test collection.json --reporter jsonJSON-Testbericht-Ausgabe
hopp test collection.json --bailBei erstem Fehler stoppen
hopp test collection.json --env-var KEY=VALUEUmgebungsvariable überschreiben
# Sammlung mit Umgebung ausführen
hopp test api-tests.json -e production.json

# Mit Verzögerung ausführen und bei Fehler stoppen
hopp test api-tests.json --delay 1000 --bail

# JUnit-Bericht für CI/CD generieren
hopp test api-tests.json --reporter junit > results.xml

# Bestimmte Variablen überschreiben
hopp test api-tests.json \
  --env-var "base_url=https://staging.example.com" \
  --env-var "auth_token=test-token-123"

# CI/CD-Pipeline-Beispiel
hopp test api-tests.json -e staging.json --bail --reporter junit
BefehlBeschreibung
Auf “Pre-request”-Tab klickenSkript hinzufügen, das vor der Anfrage läuft
Auf “Tests”-Tab klickenSkript hinzufügen, das nach der Antwort läuft
pw.env.set("key", "value")Umgebungsvariable setzen
pw.env.get("key")Umgebungsvariable abrufen
pw.expect(response.status).toBe(200)Statuscode prüfen
pw.expect(response.body).toHaveProperty("id")Body-Eigenschaft prüfen
// Pre-request: Zeitstempel generieren
pw.env.set("timestamp", Date.now().toString());

// Pre-request: Zufällige ID generieren
pw.env.set("random_id", Math.random().toString(36).slice(2));

// Test: Statuscode prüfen
pw.test("Status is 200", () => {
  pw.expect(pw.response.status).toBe(200);
});

// Test: Antwortkörper prüfen
pw.test("Response has user data", () => {
  const body = pw.response.body;
  pw.expect(body).toHaveProperty("id");
  pw.expect(body).toHaveProperty("name");
  pw.expect(body.name).toBe("Alice");
});

// Test: Antwortzeit prüfen
pw.test("Response is fast", () => {
  pw.expect(pw.response.status).toBeLessThan(500);
});

// Test: Token für nächste Anfrage speichern
pw.test("Extract auth token", () => {
  const token = pw.response.body.access_token;
  pw.env.set("auth_token", token);
});
TastenkürzelBeschreibung
Ctrl + EnterAnfrage senden
Ctrl + KBefehlspalette
Ctrl + SAktuelle Anfrage speichern
Ctrl + Shift + PSammlungen durchsuchen
Ctrl + /Seitenleiste umschalten
Alt + ↑Vorherige Anfrage im Verlauf
Alt + ↓Nächste Anfrage im Verlauf
F11Vollbild umschalten
BefehlBeschreibung
Team über Seitenleiste erstellenTeam-Arbeitsbereich einrichten
Mitglieder per E-Mail einladenMitarbeiter hinzufügen
Geteilte SammlungenTeamweite Anfragebibliotheken
Geteilte UmgebungenTeamweite Variablensets
Echtzeit-ZusammenarbeitTeam-Bearbeitungen live sehen
Rollenbasierter ZugriffEigentümer-, Bearbeiter-, Betrachter-Rollen
  1. Sammlungen nach API-Domäne organisieren — Verwandte Endpunkte in Sammlungen gruppieren und Ordner für Ressourcentypen (Benutzer, Bestellungen, Produkte) verwenden, um alles auffindbar zu halten.

  2. Umgebungen für Staging vs. Produktion verwenden — Separate Umgebungen für Entwicklung, Staging und Produktion mit denselben Variablennamen aber unterschiedlichen Werten erstellen. Mit einem Klick wechseln.

  3. Geheimnisse als geheime Variablen speichern — API-Keys und Tokens als “Secret”-Typ markieren, damit sie in der UI maskiert und von Exporten ausgeschlossen sind.

  4. Pre-Request-Skripte für Authentifizierung verwenden — Zeitstempel generieren, Signaturen berechnen oder Tokens automatisch vor jeder Anfrage aktualisieren, statt sie manuell zu kopieren.

  5. Tests für kritische Endpunkte schreiben — Testskripte hinzufügen, um Statuscodes, Antwortstruktur und Schlüsselwerte zu überprüfen. Über CLI in CI/CD-Pipelines ausführen.

  6. Aus OpenAPI-Spezifikationen importieren — Bei der Arbeit mit dokumentierten APIs die OpenAPI/Swagger-Spezifikation importieren, um alle Endpunkte mit korrekten Parametern automatisch zu generieren.

  7. Authentifizierung auf Sammlungsebene verwenden — Authentifizierung auf Sammlungsebene setzen und in einzelnen Anfragen “Inherit from parent” verwenden, um Auth-Konfiguration nicht zu duplizieren.

  8. Sammlungen in Versionskontrolle exportieren — Sammlungen als JSON exportieren und in das Repository committen für Versionierung und Team-Sharing.

  9. CLI in CI/CD verwendenhopp test zur Pipeline hinzufügen, um API-Tests bei jedem Deployment auszuführen und sicherzustellen, dass Endpunkte funktionieren, bevor sie live gehen.

  10. Für sensible APIs selbst hosten — Beim Testen interner oder sensibler APIs die selbst gehostete Docker-Version bereitstellen, um alle Daten innerhalb der eigenen Infrastruktur zu halten.