DEV Community

Cover image for Kostenlose Open-Source CLI Tools für API Mocking
Emre Demir
Emre Demir

Posted on • Originally published at apidog.com

Kostenlose Open-Source CLI Tools für API Mocking

Wenn Sie eine API über die Befehlszeile simulieren, ist die Lizenz genauso wichtig wie die Feature-Liste. Ein Mock-Server, dessen Quellcode Sie lesen, selbst hosten und ohne Lizenzanzahl in CI ausführen können, unterscheidet sich grundlegend von einem gehosteten SaaS-Mock hinter einem Login. Dieser Leitfaden konzentriert sich auf Open-Source-Tools, die Sie klonen, inspizieren und kostenlos ausführen können.

Probieren Sie Apidog noch heute aus

Jedes hier aufgeführte Tool ist unter einer permissiven Lizenz (MIT oder Apache-2.0) quelloffen, liegt in einem öffentlichen GitHub-Repository und lässt sich ohne Konto selbst hosten. Das ist der Filter. Wenn Sie kleinere, eigenständige Binärdateien suchen, die nach Startgeschwindigkeit und Installationsgröße geordnet sind, lesen Sie stattdessen die begleitenden Empfehlungen für leichtgewichtige Mock-Server. Diese Liste konzentriert sich auf Quellcode und Selbst-Hosting, sodass auch eine schwerere, selbst hostbare Plattform enthalten sein kann.

Für jedes Tool erhalten Sie Lizenz, Installations- und Startbefehl, einen konkreten Einsatzfall sowie die wichtigsten Einschränkungen. Wenn Sie zusätzlich kommerzielle Optionen vergleichen möchten, bieten der Überblick über die besten API-Mock-Tools und die Übersicht der REST-API-Mocking-Tools eine breitere Einordnung.

Eine kurze, ehrliche Anmerkung vor der Liste: Apidog ist nicht Open Source, sondern eine Freemium-Kommerzplattform. Es erscheint einmal am Ende als integrierte Alternative, klar gekennzeichnet und nicht als Open-Source-Eintrag. Alle sechs Tools in den folgenden Abschnitten sind tatsächlich Open Source.

Was ein CLI-Mock-Tool zu Open Source macht

Drei Kriterien entscheiden, ob ein Tool auf diese Liste gehört:

  1. Lizenz: Der Quellcode muss öffentlich unter einer permissiven Lizenz verfügbar sein. Alle hier genannten Tools stehen unter MIT oder Apache-2.0. Sie können sie lesen, forken und ohne Lizenzgebühren oder Benutzerlimits in eigenen Projekten einsetzen.
  2. Selbst hostbar: Das Tool muss auf dem Laptop, in einem Container oder auf einem eigenen Server laufen. Es darf keine gehostete Steuerungsebene oder Kontopflicht voraussetzen. So bleibt der Mock auch in isolierten CI-Runnern nutzbar.
  3. Offen gepflegt: Ein öffentliches GitHub-Repository mit Commit-Historie, Issues und Releases ist erforderlich. Sterne sind nur ein grobes Signal; aktuelle Commits und getaggte Releases sind aussagekräftiger.

Nicht bewertet werden rohe Geschwindigkeit oder Installationsgröße. Dafür gibt es den leichtgewichtigen Ansatz. Hier kann auch eine größere, containerbasierte Plattform sinnvoll sein, solange Quellcode und Lizenz offen sind.

Prism (Stoplight)

Prism verwandelt eine OpenAPI- oder Postman-Datei in einen laufenden Mock-Server. Sie übergeben eine Spezifikation, und Prism liefert Beispielantworten, validiert eingehende Anfragen gegen das Schema und kann als Validierungs-Proxy vor einer echten API laufen.

npm install -g @stoplight/prism-cli
prism mock https://raw.githubusercontent.com/stoplightio/prism/master/examples/petstore.oas2.yaml
Enter fullscreen mode Exit fullscreen mode

Der Befehl startet einen Mock auf http://127.0.0.1:4010. Die Spezifikation steuert das Verhalten vollständig:

curl http://127.0.0.1:4010/pets
Enter fullscreen mode Exit fullscreen mode

GET /pets liefert das Beispiel aus Ihrem OpenAPI-Dokument zurück. Senden Sie eine ungültige Nutzlast, zeigt Prism, welchen Teil des Schemas die Anfrage verletzt.

Am besten geeignet für: spezifikationsgesteuertes Contract-Mocking, bei dem die OpenAPI-Datei die einzige Quelle der Wahrheit ist. Besonders nützlich ist der Validierungs-Proxy-Modus, um Abweichungen zwischen Spezifikation und echter API zu erkennen.

Einschränkungen: Antworten stammen aus Beispielen und Schema. Die Qualität des Mocks hängt daher direkt von der Qualität der Spezifikation ab. Zustandsbehaftetes Verhalten wie „Datensatz erstellen und später wieder abrufen“ ist nicht integriert. Außerdem benötigen Sie eine Node-Runtime.

Mockoon CLI

Mockoon ist vor allem für seine Desktop-App bekannt. Die CLI verwendet jedoch dieselbe Engine ohne GUI und eignet sich für CI und Selbst-Hosting. Sie können eine Mockoon-Umgebung oder direkt eine OpenAPI-Datei bereitstellen.

npm install -g @mockoon/cli
mockoon-cli start --data ./environment.json --port 3000
Enter fullscreen mode Exit fullscreen mode

Alternativ starten Sie direkt aus einer OpenAPI-Datei:

mockoon-cli start --data ./openapi.yaml --port 3000 --watch --log-transaction
Enter fullscreen mode Exit fullscreen mode
  • --watch lädt den Mock bei Dateiänderungen neu.
  • --log-transaction schreibt vollständige Anfrage- und Antwort-Logs.

Am besten geeignet für: umfangreiche, regelbasierte Antworten ohne eigenen Mock-Code. Mockoon unterstützt Response-Templating, bedingte Regeln und Proxying. So kann ein Endpunkt abhängig von Parametern, Headern oder Request-Bodies unterschiedliche Antworten liefern.

Einschränkungen: Der angenehmste Weg zum Erstellen von Umgebungen ist die Desktop-App. Environment-JSON manuell zu bearbeiten, kann umständlich sein. Auch die Templating-Syntax benötigt Einarbeitung.

json-server

json-server ist ein schneller Weg, eine REST-API zu simulieren. Geben Sie ihm eine JSON-Datei, und es erzeugt CRUD-Routen für GET, POST, PUT, PATCH und DELETE. Änderungen werden in die Datei zurückgeschrieben.

Erstellen Sie zunächst eine db.json:

{
  "posts": [
    {
      "id": 1,
      "title": "Erster Beitrag",
      "published": true
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Starten Sie anschließend den Server:

npx json-server db.json
Enter fullscreen mode Exit fullscreen mode

Danach stehen unter anderem diese Endpunkte bereit:

curl http://localhost:3000/posts
curl http://localhost:3000/posts/1

curl -X POST http://localhost:3000/posts \
  -H 'Content-Type: application/json' \
  -d '{"title":"Neuer Beitrag","published":false}'
Enter fullscreen mode Exit fullscreen mode

Mit dem posts-Array erhalten Sie sofort GET /posts, GET /posts/1, POST /posts und die weiteren CRUD-Endpunkte. Zusätzlich stehen Filterung, Sortierung und Paginierung über Abfrageparameter zur Verfügung. Neue Datensätze bleiben in db.json erhalten.

Am besten geeignet für: Frontend-Entwicklung, bevor das Backend existiert. Anders als viele spezifikationsgesteuerte Tools ist json-server sofort zustandsbehaftet. Dank npx ist keine globale Installation erforderlich.

Einschränkungen: Das Tool ist auf typische REST-Strukturen ausgelegt und passt nicht zu jeder individuellen API. Es importiert kein OpenAPI-Dokument; die JSON-Datei ist der Vertrag. Für Lasttests oder produktionsähnliches Verhalten ist es nicht gedacht.

WireMock

WireMock ist ein umfangreiches Open-Source-Tool für HTTP-Mocking. Es läuft als eigenständiger Prozess, lässt sich über eine JSON-Admin-API oder Stub-Dateien konfigurieren und unterstützt Request-Matching, Response-Templating, zustandsbehaftete Szenarien, Fehlereinleitung sowie Record-and-Replay.

docker run -it --rm -p 8080:8080 wiremock/wiremock:latest
Enter fullscreen mode Exit fullscreen mode

Registrieren Sie einen ersten Stub über die Admin-API:

curl -X POST http://localhost:8080/__admin/mappings \
  -H 'Content-Type: application/json' \
  -d '{
    "request": {
      "method": "GET",
      "url": "/hello"
    },
    "response": {
      "status": 200,
      "body": "world"
    }
  }'
Enter fullscreen mode Exit fullscreen mode

Testen Sie den Stub:

curl http://localhost:8080/hello
# world
Enter fullscreen mode Exit fullscreen mode

Alternativ können Sie JSON-Stubs in einem mappings/-Verzeichnis ablegen und dieses in den Container mounten.

Am besten geeignet für: komplexe Testszenarien. WireMock kann zustandsbehaftete Abläufe, Verzögerungen und Fehler simulieren, etwa um instabile Drittanbieter-APIs nachzustellen. Der Proxy- und Recording-Modus hilft, echte APIs aufzuzeichnen und später wiederzugeben.

Einschränkungen: WireMock basiert auf der JVM. Sie benötigen daher Docker oder eine Java-Laufzeitumgebung. Die Konfigurationsfläche ist groß und für einfache Mocks oft mehr als nötig. Einen einzelnen „Spezifikation lesen und starten“-Befehl wie bei Prism gibt es nicht.

MockServer

MockServer kombiniert HTTP(S)-Mock und Proxy auf einem Port und zielt direkt auf Integrationstests. Es kann APIs simulieren, Live-Traffic proxien und aufzeichnen sowie Fehler einschleusen. Neuere Versionen unterstützen HTTP/2, gRPC und WebSocket.

docker run -d --rm -p 1080:1080 mockserver/mockserver
Enter fullscreen mode Exit fullscreen mode

Registrieren Sie eine Erwartung:

curl -X PUT 'http://localhost:1080/mockserver/expectation' \
  -H 'Content-Type: application/json' \
  -d '{
    "httpRequest": {
      "path": "/order"
    },
    "httpResponse": {
      "body": "{\"status\":\"ok\"}"
    }
  }'
Enter fullscreen mode Exit fullscreen mode

Prüfen Sie die Antwort:

curl http://localhost:1080/order
# {"status":"ok"}
Enter fullscreen mode Exit fullscreen mode

MockServer-Clients für Java, JavaScript, Ruby und weitere Sprachen erlauben es, dieselben Erwartungen direkt aus Testcode statt über curl zu konfigurieren.

Am besten geeignet für: Mocking und Proxying an einem Ort sowie Fehlereinleitung. Wenn Sie prüfen müssen, ob eine Anfrage eine bestimmte Anzahl von Malen erfolgt ist, ist die Verifizierungs-API darauf ausgelegt. Besonders passend für JVM-lastige Stacks. Falls es nicht ganz passt, vergleichen Sie MockServer-Alternativen.

Einschränkungen: Wie WireMock ist MockServer JVM-basiert. Das Erwartungs-JSON kann ausführlich werden. Die Überschneidung mit WireMock ist groß; wählen Sie anhand der Client-Bibliothek, die besser zu Ihrem Test-Stack passt.

Microcks

Microcks ist die Plattform-Option und ein Inkubationsprojekt der Cloud Native Computing Foundation. Es erzeugt Live-Mocks aus OpenAPI, AsyncAPI, gRPC, GraphQL, Postman-Sammlungen und SoapUI-Projekten. Dieselben Verträge lassen sich anschließend für Konformitätstests gegen reale Implementierungen verwenden.

Microcks unterstützt nicht nur HTTP, sondern auch ereignisgesteuerte und asynchrone Protokolle.

Starten Sie das All-in-One-Image:

docker run -d --name microcks -p 8585:8080 quay.io/microcks/microcks-uber:latest
Enter fullscreen mode Exit fullscreen mode

Öffnen Sie danach http://localhost:8585 und importieren Sie eine Spezifikation, um Mock-Endpunkte bereitzustellen.

Die begleitende microcks-cli steuert eine laufende Microcks-Instanz aus CI heraus:

microcks-cli import 'petstore.yaml:true' \
  --microcksURL=http://localhost:8585/api \
  --keycloakClientId=... \
  --keycloakClientSecret=...
Enter fullscreen mode Exit fullscreen mode

Am besten geeignet für: Teams, die einen verwalteten Katalog von Mocks über viele APIs und Protokolle hinweg benötigen und Vertragstests integrieren wollen. Das Mocking asynchroner und ereignisgesteuerter Systeme wie Kafka oder MQTT ist in diesem Bereich besonders wertvoll.

Einschränkungen: Microcks ist ein Server und keine einzelne Binärdatei. Die microcks-cli importiert Artefakte und löst Tests in einer laufenden Instanz aus, dient aber nicht selbst als Mock-Server. Für einen einzelnen lokalen Mock ist Microcks daher aufwändiger als Prism oder json-server.

Ein ehrlicher Exkurs: Apidog

Apidog ist nicht Open Source und erhält deshalb keinen nummerierten Platz. Wenn Sie aber festgestellt haben, dass die Open-Source-Tools unterschiedliche Bereiche abdecken — spezifikationsgesteuerte Mocks, zustandsbehaftetes CRUD und Vertragstests — und Sie diese nicht selbst kombinieren möchten, ist es eine Alternative.

Apidog ist eine Freemium-Plattform, deren kostenlose Stufe Mocking beinhaltet. Mit apidog mock in der apidog-cli können Sie Mock-Erwartungen vom Terminal aus neben Design, Tests und Dokumentation in einem Projekt verwalten. Smart Mock generiert automatisch realistische Feldwerte aus Ihrem Schema, sodass Sie Beispiel-Bodies nicht manuell schreiben müssen.

Der Kompromiss ist klar: Sie erhalten einen integrierten Workflow und eine kostenlose Stufe statt Open Source und Selbst-Hosting. Wenn Open Source oder isoliertes Selbst-Hosting zwingend erforderlich ist, wählen Sie eines der sechs Tools oben. Wenn ein integrierter Design-zu-Mock-Workflow wichtiger ist, ist Apidog die Alternative zum Kombinieren mehrerer Tools.

Wie man wählt

Tool Am besten für Installation Lizenz Anmerkungen
Prism Spezifikationsgesteuerte Mocks und Validierungs-Proxy npm i -g @stoplight/prism-cli Apache-2.0 OpenAPI/Postman rein, Mock raus; zustandslos
Mockoon CLI Regelbasierte Antworten ohne Code npm i -g @mockoon/cli MIT In der App entwerfen, headless ausführen
json-server Zustandsbehaftetes Fake-REST fürs Frontend npx json-server db.json MIT Vollständiges CRUD mit Persistenz, keine Konfiguration
WireMock Komplexe Testszenarien und Fehler docker run wiremock/wiremock Apache-2.0 JVM; Record-and-Replay; zustandsbehaftet
MockServer Mock, Proxy und Verifizierung docker run mockserver/mockserver Apache-2.0 JVM; HTTP/2, gRPC und WebSocket
Microcks Verwalteter Multi-API-/Protokoll-Katalog docker run microcks-uber Apache-2.0 CNCF-Plattform; CLI ist Client, kein Server
Apidog (nicht OSS) Integriertes Design-zu-Mock npm i -g apidog-cli Freemium Kostenlose Stufe; apidog mock im Projekt

Wählen Sie nach Form, nicht nach Popularität:

  • OpenAPI-Datei direkt lesen und durchsetzen: Starten Sie mit Prism.
  • Zustandsbehaftetes CRUD, bevor das Backend existiert: Verwenden Sie json-server.
  • Komplexe Tests mit Fehlern, Verzögerungen und Record-and-Replay: Nutzen Sie WireMock oder MockServer und wählen Sie anhand Ihrer bevorzugten Client-Bibliothek.
  • Gemeinsamer Multi-Protokoll-Katalog mit Vertragstests: Setzen Sie Microcks ein.

Welche Form zu welchem Szenario passt, zeigt auch der Leitfaden zu API-Mocking-Anwendungsfällen.

Zusammenfassung

Open-Source-CLI-Mock-Tools liefern Mock-Server, deren Code Sie lesen, selbst hosten und kostenlos in CI ausführen können.

  • Prism und json-server decken häufige Fälle mit einem Befehl ab.
  • Mockoon CLI eignet sich für regelbasierte Antworten ohne eigenen Mock-Code.
  • WireMock und MockServer bewältigen anspruchsvolle Testszenarien.
  • Microcks erweitert das Konzept zu einem verwalteten Katalog über mehrere Protokolle hinweg.

Alle sechs Tools sind unter MIT oder Apache-2.0 lizenziert, selbst hostbar und in öffentlichen GitHub-Repositories verfügbar.

Wenn Sie Mocks lieber direkt neben API-Design, Tests und Dokumentation verwalten möchten, ohne separate Tools zu verbinden, laden Sie Apidog herunter und testen Sie apidog mock in der kostenlosen Stufe. Es ist nicht Open Source, bietet aber einen integrierten Ablauf von der Befehlszeile bis zu CI.

Top comments (0)