Apidog CLI Tutorial: REST API testen über die Kommandozeile (Schritt für Schritt)

Eine Schritt-für-Schritt-Anleitung für die Apidog CLI: Installieren Sie die CLI, importieren Sie eine REST API, erstellen Sie ein Testszenario und führen Sie automatisierte API-Tests über die Kommandozeile mit Reportern, datengesteuerten Läufen und CI/CD aus.

Ashley Innocent

Ashley Innocent

16 June 2026

Apidog CLI Tutorial: REST API testen über die Kommandozeile (Schritt für Schritt)

enterprise.banner.title

enterprise.banner.feature1

enterprise.banner.feature2

enterprise.banner.feature3

enterprise.banner.ctaB

Die meisten API-Tests beginnen ihr Leben in einer GUI. Man klickt sich durch, fügt ein paar Assertions hinzu und führt sie manuell aus. Das funktioniert so lange, bis dieselben Tests bei jedem Push, jede Nacht oder in einer Pipeline, wo niemand zuschaut, ausgeführt werden müssen. An diesem Punkt möchte man einen Befehl haben, den man eingeben, skripten und in die CI einbinden kann.

Dieser Befehl ist die Apidog CLI. Dieses Tutorial führt Sie durch das End-to-End-Testen einer echten REST-API von Ihrem Terminal aus: Installieren Sie das Tool, importieren Sie eine API, richten Sie eine Umgebung ein, erstellen Sie ein Testszenario, führen Sie es mit Assertions aus, speisen Sie Daten ein und sammeln Sie Berichte. Jeder Befehl und jede Ausgabe unten stammt von einem echten Lauf der Apidog CLI Version 2.2.2 gegen eine Live-Public-API, sodass Sie mitmachen und die gleichen Ergebnisse erzielen können.

Wenn Sie die visuelle Seite derselben Plattform nutzen möchten, können Sie Apidog herunterladen und die Tests zuerst in der App entwerfen. Aber alles hier bleibt auf der Kommandozeile.

Was Sie erstellen werden

Sie testen restful-api.dev, eine kostenlose öffentliche REST-API mit echtem CRUD über eine /objects-Ressource. Am Ende werden Sie Folgendes haben:

Derselbe Ablauf lässt sich auf Ihre eigene API skalieren und ist die Grundlage für das Ausführen von API-Tests in CI/CD.

Bevor Sie beginnen

Sie benötigen Node.js 16 oder neuer und ein Apidog-Konto. Wenn Sie zuerst Runner vergleichen, ist die Kurzversion, dass die Apidog CLI vollständige Testszenarien ausführt und API-Ressourcen als Code verwaltet, was sie von Newman und der Postman CLI unterscheidet.

Schritt 1: Installieren und anmelden

Installieren Sie die CLI global von npm:

npm install -g apidog-cli@latest

Bestätigen Sie die Installation:

apidog --version
# 2.2.2

Authentifizieren Sie sich jetzt. Holen Sie sich ein Token aus der Apidog-App unter Ihrem Avatar, Kontoeinstellungen, API-Zugriffstoken und führen Sie dann aus:

apidog login --with-token <YOUR_TOKEN>

Das Token wird in ~/.apidog/config.toml gespeichert, sodass Sie dies nur einmal pro Maschine tun müssen. Überprüfen Sie, wer Sie sind:

Jeder Befehl gibt strukturiertes JSON mit einem success-Flag und hilfreichen agentHints zurück, was die Ausgabe leicht skriptfähig oder in jq umleitbar macht.

Schritt 2: Ein Projekt erstellen

Wählen Sie das Team aus, unter dem Sie das Projekt erstellen möchten, und erstellen Sie es dann:

apidog team list
apidog project create --team 329562 --name "CLI Field Test"

Sie erhalten die neue Projekt-ID zurück.

Speichern Sie sie in einer Shell-Variable, damit der Rest dieses Tutorials per Copy-Paste übernommen werden kann:

PID=1314366   # replace with your project id
apidog project get $PID

Schritt 3: Ihre REST-API importieren

Sie könnten Endpunkte manuell erstellen, aber das Importieren einer OpenAPI-Datei ist schneller und spiegelt wider, wie echte Projekte beginnen. Hier ist eine kleine Spezifikation, die die /objects CRUD-Endpunkte beschreibt (speichern Sie sie als objects-api.openapi.json):

{
  "openapi": "3.0.3",
  "info": { "title": "Objects API", "version": "1.0.0" },
  "servers": [{ "url": "https://api.restful-api.dev" }],
  "paths": {
    "/objects": {
      "get":  { "summary": "List objects" },
      "post": { "summary": "Create object" }
    },
    "/objects/{id}": {
      "get":    { "summary": "Get object by id" },
      "put":    { "summary": "Update object" },
      "delete": { "summary": "Delete object" }
    }
  }
}

Importieren Sie sie:

apidog import --project $PID --format openapi --file ./objects-api.openapi.json
# "createCount": 5  (5 endpoints created, 0 errors)

Der Importer liest auch openapi, postman, har, insomnia, jmeter und mehr. Listen Sie auf, was geladen wurde:

apidog endpoint list --project $PID
# 37921721 get    /objects
# 37921722 post   /objects
# 37921723 get    /objects/{id}
# 37921724 put    /objects/{id}
# 37921725 delete /objects/{id}

Schritt 4: Eine Umgebung einrichten

Eine Umgebung enthält die Basis-URL und alle Variablen, die Ihre Tests wiederverwenden. Erstellen Sie eine und speichern Sie deren ID:

apidog environment create "Production" --project $PID --base-url "https://api.restful-api.dev"
apidog environment list --project $PID
# { "id": 6334917, "name": "Production", "baseUrls": { "default": "https://api.restful-api.dev" } }
ENV=6334917   # replace with your environment id

Sie werden später -e $ENV an den Run-Befehl übergeben, damit der Test weiß, wohin Anfragen gesendet werden sollen.

Schritt 5: Die Automatisierungs-Schreibsperre überwinden

Hier ist das erste, was Leute stolpern lässt. Testszenarien und Testdaten sind Automatisierungsressourcen, und das Schreiben dieser in Ihren Hauptzweig von einem externen Tool ist standardmäßig blockiert:

apidog test-scenario create --project $PID --name "x" --description "" --folder-id 0 --priority 1
# "error": { "code": "403075", "message": "Automation caller branch required" }

Dies ist eine Leitplanke, kein Fehler. Sie haben zwei Wege, dies zu umgehen:

  1. Aktivieren Sie die direkte Bearbeitungsberechtigung in der Apidog-Desktop-App unter Projekteinstellungen, Funktionsseinstellungen, AI-Funktionseinstellungen, Externe AI-Bearbeitungsberechtigungen.
  2. Arbeiten Sie an einem AI-Zweig, der Automatisierungsänderungen isoliert hält, bis Sie sich zum Mergen entscheiden. Dieser Pfad bleibt vollständig auf der Kommandozeile, also werden wir diesen verwenden.

Erstellen Sie den Zweig von main:

apidog branch create --project $PID --type ai \
  --name "ai/20260616-from-main-cli-field-test" --from main
BR="ai/20260616-from-main-cli-field-test"

Das Namensmuster ai/JJJJMMTT-von-<Quelle>-<Funktion> ist die Konvention, die die CLI erwartet. Beachten Sie, dass import, environment create und Endpunktbearbeitungen nicht gesperrt sind; nur die Automatisierungsressourcen sind betroffen.

Schritt 6: Ein Testszenario erstellen

Ein Szenario ist ein geordneter Ablauf von Anfragen mit Assertions dazwischen. Sie erstellen zuerst die Hülle und fügen dann Schritte hinzu. Erstellen Sie es auf Ihrem AI-Zweig:

apidog test-scenario create --project $PID --branch "$BR" \
  --name "Object CRUD lifecycle" \
  --description "Create, read, then delete an object and assert each step" \
  --folder-id 0 --priority 1
SID=1836498   # the returned scenario id

Schritte werden über update mit einer JSON-Datei hinzugefügt. Die goldene Regel bei jeder JSON-Schreiboperation ist, vor dem Senden zu validieren, damit Sie niemals eine fehlerhafte Nutzlast übertragen:

apidog cli-schema get      test-scenario-update          # see the exact shape
apidog cli-schema validate test-scenario-update --file ./steps-crud.json
# "data file is valid"

Jeder Schritt ist eine Anfrage plus ein kleines Skript, das die Antwort bestätigt und Daten an den nächsten Schritt übergibt. Hier ist die Struktur des Erstellungsschritts, der ein neues Objekt postet und dessen id für spätere Schritte speichert:

{
  "type": "customHttp",
  "name": "Create object",
  "customHttpRequest": {
    "path": "https://api.restful-api.dev/objects",
    "method": "post",
    "requestBody": { "type": "json", "data": "{\"name\":\"Apidog CLI Field Test\",\"data\":{\"price\":42}}" },
    "postProcessors": [{
      "type": "customScript",
      "data": "pm.test('create returns 200', function () { pm.response.to.have.status(200); });\nvar body = pm.response.json();\npm.globals.set('objId', body.id);",
      "enable": true
    }],
    "projectId": 1314366
  }
}

Die nächsten Schritte verwenden {{objId}} in der URL, um dasselbe Objekt abzurufen und dann zu löschen. Wenden Sie die vollständige dreistufige Datei an:

apidog test-scenario update $SID --project $PID --branch "$BR" --file ./steps-crud.json
# "success": true

Sie müssen Szenarien nicht als JSON erstellen. Sie visuell in Apidog zu erstellen und von der CLI aus auszuführen, ist genauso gültig. Der JSON-Pfad ist wichtig, wenn Sie Ihre Tests wie jeden anderen Code versionskontrollieren und überprüfen möchten.

Schritt 7: Ausführen über die Kommandozeile

Das ist die Belohnung. Führen Sie das Szenario mit dem CLI-Reporter aus:

apidog run -t $SID --project $PID --branch "$BR" -e $ENV -r cli
❏ Object CRUD lifecycle
↳ Create object        POST .../objects [200 OK]
  ✓ create returns 200   ✓ response has an id   ✓ name was echoed back
↳ Get the created object  GET .../objects/ff80...3de [200 OK]
  ✓ get returns 200   ✓ id matches the created object   ✓ price persisted in data
↳ Delete the object    DELETE .../objects/ff80...3de [200 OK]
  ✓ delete returns 200

  Http Requests  3 / 0 failed
  Assertions     7 / 0 failed

Drei Anfragen, sieben Assertions, null Fehler, und die erstellte id floss vom ersten Schritt in die nächsten beiden. Das ist ein vollständiger API-Test, der ohne einen einzigen Klick ausgeführt wird.

Möchten Sie Dateien statt Konsolenausgabe? Fordern Sie mehrere Reporter gleichzeitig an und verweisen Sie sie auf einen Ordner:

apidog run -t $SID --project $PID --branch "$BR" -e $ENV \
  -r cli,html,json,junit --out-dir ./reports --out-file "crud-report"
ls ./reports
# crud-report.html  crud-report.json  crud-report.xml

Die JUnit-XML-Datei ist das, was Ihr CI-Server liest, um Pass/Fail pro Build anzuzeigen. Der HTML-Bericht ist der, den Sie mit Teamkollegen teilen.

Schritt 8: Denselben Test mit vielen Eingaben ausführen

Echte Testsuiten decken mehr als einen Fall ab. Datengesteuerte Läufe wiederholen ein Szenario einmal pro Datenzeile, sodass Sie zehn Eingaben testen, ohne zehn Szenarien zu schreiben. Dies ist die gleiche Idee wie parametrisierte Tests aus CSV und JSON.

Legen Sie Ihre Zeilen in einer Datei ab:

[
  { "name": "Pixel 8 Pro", "price": 999 },
  { "name": "iPhone 15", "price": 899 },
  { "name": "Galaxy S24", "price": 799 }
]

Referenzieren Sie die Daten mit -d, und lassen Sie das Szenario {{name}} und {{price}} aus jeder Zeile lesen:

apidog run -t $DID --project $PID --branch "$BR" -e $ENV -d ./objects-data.json -r cli
Iteration 1/3 … ✓ row created (200) ✓ name matches the data row
Iteration 2/3 … ✓ row created (200) ✓ name matches the data row
Iteration 3/3 … ✓ row created (200) ✓ name matches the data row
  Iterations 3 / 0 failed   Assertions 6 / 0 failed

Drei Zeilen hinein, drei Iterationen heraus. Tauschen Sie die Datei gegen eine CSV-Datei aus und nichts ändert sich.

Schritt 9: Berichte sammeln

Lokale Läufe schreiben Dateien. Um einen Bericht zu erhalten, den Ihr gesamtes Team im Browser öffnen kann, fügen Sie --upload-report hinzu:

apidog run -t $SID --project $PID --branch "$BR" -e $ENV -r cli --upload-report
# Apidog CLI runs data uploaded to the cloud successfully.
# https://app.apidog.com/link/project/1314366/api-test/test-report/2605398

Eine wichtige Besonderheit: Ein Cloud-Bericht wird mit dem Zweig markiert, auf dem er ausgeführt wurde. Da dieser Lauf auf Ihrem AI-Zweig stattfand, wird ein einfaches apidog test-report list --project $PID (das auf main abzielt) ihn nicht anzeigen. Rufen Sie ihn stattdessen über die ID aus dem Upload-Link ab:

apidog test-report get 2605398 --project $PID
apidog test-report download 2605398 --project $PID --format json --output ./cloud-report.json

Schritt 10: Ihre API als Dokumentation oder Spezifikation exportieren

Die CLI gibt auch Daten aus. Exportieren Sie das Projekt als OpenAPI-Datei, Markdown oder HTML-Dokumentation:

apidog export --project $PID --format openapi --oas-version 3.0 --output ./openapi-export.json
apidog export --project $PID --format markdown --output ./api-docs.md
apidog export --project $PID --format html --output ./api-docs.html

Dies ist praktisch, um bei jeder Änderung eine neue Spezifikation zu committen oder statische Dokumente aus einer Pipeline zu veröffentlichen.

Schritt 11: In CI/CD integrieren

Alles, was Sie manuell ausgeführt haben, wird zu drei Zeilen in einer Pipeline. Der Kern ist die Installation, dann die Ausführung mit dem JUnit-Reporter, damit der CI-Server die Ergebnisse lesen kann:

- run: npm install -g apidog-cli@latest
- run: apidog login --with-token $APIDOG_TOKEN
- run: apidog run -t $SID --project $PID -e $ENV -r junit --out-dir ./reports

Speichern Sie das Token als Geheimnis und lassen Sie den Build fehlschlagen, wenn ein Test fehlschlägt (die CLI gibt bei Fehlern einen Exit-Code ungleich Null zurück). Für einen vollständigen Copy-Paste-Workflow siehe die Anleitung zum Ausführen von Apidog CLI-Tests in GitHub Actions oder durchsuchen Sie API-Testautomatisierungstools, die in eine Pipeline passen.

Zusammenfassung

Sie haben von einem leeren Terminal aus einen erfolgreichen, datengesteuerten API-Test mit teilbaren Berichten durchgeführt und dabei nie die Kommandozeile verlassen. Das Muster ist immer dasselbe: Importieren oder entwerfen Sie Ihre API, erstellen Sie eine Umgebung, bauen Sie ein Szenario mit Assertions und führen Sie es dann mit apidog run aus. Sobald dieser Befehl lokal funktioniert, ist das Einfügen in CI eine Änderung von drei Zeilen.

Richten Sie dieselben Schritte auf Ihre eigene API aus, committen Sie die Szenariodateien zusammen mit Ihrem Code, und Ihre Tests laufen überall dort, wo eine Shell vorhanden ist. Laden Sie Apidog herunter, um loszulegen, und halten Sie die curl-Alternativen für REST-API-Tests griffbereit für schnelle Einzelprüfungen, für die die CLI überdimensioniert wäre.

Schaltfläche

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen