DEV Community

Cover image for DummyJSON: Kostenlose Fake REST API – Eigene Mock API erstellen
Emre Demir
Emre Demir

Posted on • Originally published at apidog.com

DummyJSON: Kostenlose Fake REST API – Eigene Mock API erstellen

Wenn Sie eine Benutzeroberfläche bauen, bevor das Backend fertig ist, brauchen Sie realistische Daten für Listen, Detailseiten, Ladezustände und Fehlerfälle. DummyJSON ist dafür ein schneller Einstieg: eine kostenlose, gehostete Fake-REST-API mit Produkten, Benutzern, Warenkörben und weiteren Ressourcen über HTTP, ohne Anmeldung. Dieser Leitfaden zeigt, wie Sie DummyJSON praktisch einsetzen, wie es sich gegenüber anderen öffentlichen Test-APIs verhält und wann Sie auf einen eigenen Mock-Server wechseln sollten.

Teste Apidog noch heute

Was ist DummyJSON?

DummyJSON ist eine kostenlose Platzhalter-JSON-API. Sie senden eine Anfrage an einen öffentlichen Endpunkt und erhalten strukturierte Beispieldaten zurück. Es gibt keine Datenbank, keinen API-Key und keine lokale Installation.

Typischer Einsatz:

  • UI-Prototypen bauen, bevor das Backend existiert
  • Fetch-/Axios-Logik testen
  • Tabellen, Karten und Detailseiten mit realistischen Daten füllen
  • Pagination, Suche und Filter ausprobieren
  • Tutorials oder Demos ohne eigenes Backend erstellen

DummyJSON Screenshot

Die Daten sind gefälscht, aber konsistent. Ein Produkt enthält zum Beispiel Titel, Preis, Bewertung, Lagerbestand und Kategorie. Ein Benutzer enthält Name, E-Mail, Adresse und Firmendaten. Dadurch können Sie UI-Komponenten gegen Daten entwickeln, die echten Produktionsdaten ähneln.

Ein einfacher Request reicht:

curl https://dummyjson.com/products/1
Enter fullscreen mode Exit fullscreen mode

Beispiel in JavaScript:

const res = await fetch("https://dummyjson.com/products/1");
const product = await res.json();

console.log(product.title, product.price);
Enter fullscreen mode Exit fullscreen mode

DummyJSON-Endpunkte, Authentifizierung und Limits

DummyJSON stellt mehrere Ressourcensammlungen bereit:

  • /products — Produkte mit Preis, Bestand, Bewertungen und Kategorien
  • /users — Benutzer mit Adressen, E-Mails und Firmendetails
  • /carts — Warenkörbe, die Benutzern zugeordnet sind
  • /posts und /comments — blogähnliche Inhalte
  • /todos — Aufgaben
  • /recipes und /quotes — weitere Beispieldaten

Daten abrufen

Alle Produkte mit Pagination:

curl "https://dummyjson.com/products?limit=5&skip=10"
Enter fullscreen mode Exit fullscreen mode

Ein einzelnes Produkt abrufen:

curl https://dummyjson.com/products/1
Enter fullscreen mode Exit fullscreen mode

Produkte suchen:

curl "https://dummyjson.com/products/search?q=phone"
Enter fullscreen mode Exit fullscreen mode

Nur bestimmte Felder zurückgeben:

curl "https://dummyjson.com/products?select=title,price,category"
Enter fullscreen mode Exit fullscreen mode

Langsames Netzwerk simulieren:

curl "https://dummyjson.com/products?delay=2000"
Enter fullscreen mode Exit fullscreen mode

Der delay-Parameter unterstützt Werte von 0 bis 5000 Millisekunden. Damit können Sie Loading States im Frontend testen.

Beispiel mit React

import { useEffect, useState } from "react";

export default function ProductList() {
  const [products, setProducts] = useState([]);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    fetch("https://dummyjson.com/products?limit=5&delay=1000")
      .then((res) => res.json())
      .then((data) => setProducts(data.products))
      .finally(() => setLoading(false));
  }, []);

  if (loading) return <p>Lade Produkte...</p>;

  return (
    <ul>
      {products.map((product) => (
        <li key={product.id}>
          {product.title} — ${product.price}
        </li>
      ))}
    </ul>
  );
}
Enter fullscreen mode Exit fullscreen mode

Authentifizierung testen

DummyJSON bietet einen Login-Endpunkt und Bearer-Token-Flow.

# 1. Einloggen und Token erhalten
curl -X POST https://dummyjson.com/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"emilys","password":"emilyspass"}'

# 2. Token für authentifizierte Anfrage verwenden
curl https://dummyjson.com/auth/me \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN_HERE"
Enter fullscreen mode Exit fullscreen mode

Das ist nützlich, wenn Sie Login-Formulare, Token-Speicherung oder geschützte Routen im Frontend testen möchten.

Schreibzugriffe sind simuliert

DummyJSON unterstützt auch POST, PUT, PATCH und DELETE.

Beispiel:

curl -X POST https://dummyjson.com/products/add \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Neues Produkt",
    "price": 99
  }'
Enter fullscreen mode Exit fullscreen mode

Wichtig: Diese Schreibvorgänge sind nicht persistent. Die API antwortet so, als wäre ein Datensatz erstellt oder aktualisiert worden, speichert ihn aber nicht dauerhaft. Beim nächsten Lesezugriff erhalten Sie wieder die ursprünglichen Daten.

Die Dokumentation veröffentlicht keine harten Rate Limits. Behandeln Sie DummyJSON trotzdem wie jeden kostenlosen Shared Service: nicht für Lasttests verwenden.

Für weitere öffentliche APIs lohnt sich auch diese Übersicht zu kostenlosen APIs für Entwickler.

DummyJSON vs. JSONPlaceholder vs. Reqres

DummyJSON ist nicht die einzige kostenlose Fake-REST-API. Häufige Alternativen sind JSONPlaceholder und Reqres.

Tool Am besten für Ressourcen Authentifizierungsfluss Schreibvorgänge persistent?
DummyJSON Realistische Demos im E-Commerce-Stil Produkte, Benutzer, Warenkörbe, Beiträge, Rezepte, mehr Login-Endpunkt + Bearer-Token Nein, simuliert
JSONPlaceholder Schnelle CRUD-Tutorials, minimale Einrichtung Beiträge, Kommentare, Benutzer, To-Dos, Alben, Fotos Keine Nein, simuliert
Reqres Authentifizierungs- und Request-/Response-Demos Benutzer, Registrierungs-/Login-Mocks Mock-Registrierung/Login Nein, simuliert

Das Muster ist bei allen ähnlich:

  • feste Beispieldaten
  • schnelle Einrichtung
  • keine persistente Speicherung
  • eingeschränkte Kontrolle über das Response-Schema

JSONPlaceholder läuft intern auf json-server, weshalb das Datenmodell sehr generisch wirkt. DummyJSON eignet sich besser, wenn Ihre Demo Produkte, Warenkörbe oder Benutzerprofile braucht. Reqres ist praktisch, wenn Sie speziell Authentifizierungsabläufe zeigen möchten.

Offizielle Quellen:

Wann feste Platzhalterdaten nicht mehr ausreichen

DummyJSON ist ideal für frühe Prototypen. In echten Projekten stoßen feste Public APIs aber schnell an Grenzen.

Sie sollten auf einen eigenen Mock wechseln, wenn:

  • Ihre App Felder benötigt, die DummyJSON nicht enthält, z. B. subscription_tier, feature_flags oder billing_status.
  • Sie persistente oder persistent wirkende Schreibvorgänge brauchen.
  • Sie Fehlerfälle wie 400, 401, 429 oder 500 gezielt testen möchten.
  • Ihre Mock-Daten exakt zu Ihrem OpenAPI-Vertrag passen müssen.
  • Frontend und Backend parallel entwickeln und sich auf ein gemeinsames Schema einigen müssen.

Beispiel: Wenn Ihr Frontend diese Response erwartet:

{
  "id": "prod_123",
  "title": "Pro Plan",
  "subscription_tier": "pro",
  "feature_flags": {
    "analytics": true,
    "team_seats": true
  }
}
Enter fullscreen mode Exit fullscreen mode

Dann hilft ein festes DummyJSON-Produkt nur begrenzt. Sie müssten Daten im Frontend umbauen oder lokale Fixtures pflegen. Besser ist ein Mock, der direkt aus Ihrem eigenen Schema generiert wird.

Eigene Fake-REST-API mit Apidog erstellen

Apidog ist eine API-Plattform zum Entwerfen, Testen, Dokumentieren und Mocken von APIs. Der Mock-Server ersetzt eine feste Fake-API, sobald Sie Kontrolle über Schema, Felder, Statuscodes und Beispiele brauchen.

Der typische Ablauf:

1. Endpunkt und Schema definieren

Erstellen Sie zum Beispiel einen Endpunkt:

GET /products
Enter fullscreen mode Exit fullscreen mode

Definieren Sie anschließend die Response-Felder:

{
  "id": "string",
  "title": "string",
  "price": "number",
  "stock": "integer",
  "category": "string",
  "status": "string"
}
Enter fullscreen mode Exit fullscreen mode

Sie können das Schema manuell anlegen oder eine bestehende OpenAPI-/Swagger-Datei importieren. So bleibt der Mock an Ihren echten API-Vertrag gebunden.

2. Mock-Daten automatisch generieren

Apidog liest Feldnamen und Typen und erzeugt passende Beispieldaten. Ein Feld wie email wird als E-Mail dargestellt, price als Zahl und createdAt als Datum.

Das spart manuelle Fixtures wie:

{
  "email": "user@example.com",
  "price": 29.99,
  "createdAt": "2026-06-24T10:00:00Z"
}
Enter fullscreen mode Exit fullscreen mode

Der Leitfaden zum Generieren von Mock-Daten aus OpenAPI-Schemas erklärt diesen schema-gesteuerten Ansatz genauer.

3. Werte und Grenzfälle anpassen

Für realistische Tests können Sie Regeln definieren, zum Beispiel:

  • price zwischen 10 und 500
  • status nur als active, inactive oder archived
  • gezielte 401-Response für fehlende Authentifizierung
  • gezielte 500-Response für Fehlerbehandlung im Frontend

Beispiel für eine Fehlerantwort:

{
  "error": "Internal Server Error",
  "message": "Unexpected mock failure"
}
Enter fullscreen mode Exit fullscreen mode

Damit testen Sie nicht nur Happy Paths, sondern auch robuste UI-Zustände.

4. Mock-Server starten und im Frontend verwenden

Apidog stellt eine Mock-URL bereit. Ihr Frontend ruft diese URL genauso auf wie DummyJSON:

curl "https://<your-mock-host>/products?limit=5"
Enter fullscreen mode Exit fullscreen mode

Im Code ändert sich nur die Base URL:

const API_BASE_URL = "https://<your-mock-host>";

const res = await fetch(`${API_BASE_URL}/products?limit=5`);
const data = await res.json();
Enter fullscreen mode Exit fullscreen mode

Der Vorteil: Wenn sich Ihre API-Spezifikation ändert, kann sich auch der Mock entsprechend ändern. Ihre Fake-Daten bleiben näher an dem, was später tatsächlich ausgeliefert wird.

Für größere Testdatensätze passt der Ansatz zur Erstellung realistischer API-Testdaten.

Apidog Mock Screenshot

Der praktische Kompromiss:

  • DummyJSON ist schneller für Wegwerf-Demos.
  • Apidog ist sinnvoller, sobald Sie ein eigenes Schema, steuerbare Fehler, definierte Statuscodes oder mockspezifische API-Verträge brauchen.

Häufig gestellte Fragen

Ist DummyJSON kostenlos nutzbar?

Ja. DummyJSON ist kostenlos und benötigt keinen API-Schlüssel. Sie können die öffentlichen Endpunkte direkt aus Browser, Curl, Skript oder App aufrufen. Es ist für Prototyping und Lernen gedacht, nicht für Produktionsverkehr oder Lasttests.

Speichert DummyJSON erstellte oder aktualisierte Daten?

Nein. POST, PUT, PATCH und DELETE geben erfolgreiche Antworten zurück, speichern aber nichts dauerhaft. Beim nächsten Lesezugriff erhalten Sie wieder die ursprünglichen Daten.

Wenn Sie persistente oder zustandsbehaftete Mocks brauchen, sollten Sie einen eigenen Mock verwenden. Der Leitfaden zu Mock-APIs erklärt den Unterschied zwischen simuliertem und zustandsbehaftetem Mocking.

Was ist der Unterschied zwischen DummyJSON und einem Mock-Server?

DummyJSON ist ein festes, öffentliches Dataset. Alle Nutzer greifen auf dieselben Datenstrukturen zu.

Ein Mock-Server wird gegen Ihr eigenes Schema betrieben. Sie definieren Endpunkte, Felder, Beispieldaten und Statuscodes selbst. Verwenden Sie DummyJSON für generische Demos und einen Mock-Server, wenn die Daten zu Ihrer eigenen API passen müssen.

Kann ich realistische Daten statt offensichtlicher Platzhalter erzeugen?

Ja. Schema-gesteuerte Mocking-Tools lesen Feldnamen und Typen und erzeugen daraus glaubwürdige Werte. Ein email-Feld sieht wie eine E-Mail aus, ein price-Feld wie ein Preis und ein createdAt-Feld wie ein Zeitstempel.

Das ist einer der Hauptgründe, warum Teams von festen Fake-APIs zu eigenen Mocks wechseln.

Fazit

DummyJSON ist eine solide kostenlose Fake-REST-API. Für frühe UI-Prototypen, Tutorials und schnelle Demos ist es schwer zu schlagen: kein Setup, keine Anmeldung, sofort nutzbare Produkte, Benutzer und Warenkörbe.

Die Grenzen entstehen, sobald Ihre App eigene Felder, persistente Schreibflüsse, kontrollierbare Fehler oder ein API-Schema benötigt, das mit dem Backend-Vertrag übereinstimmt.

Wenn Sie diesen Punkt erreichen, erstellen Sie Ihre eigene Fake-REST-API. Mit Apidog definieren Sie Ihr Schema, generieren realistische Mock-Daten daraus und halten Mock und API-Spezifikation synchron.

Top comments (0)