Zum Inhalt springen
Tutorial

Generieren Sie mit einem API-Aufruf typisierte Scheindaten aus einem beliebigen JSON-Schema

| 5 min read

Senden Sie ein JSON-Schema an die Botoi-API für den Scheindatengenerator und erhalten Sie realistische Fake-Daten für Benutzerprofile, E-Commerce-Bestellungen, Blogbeiträge und mehr. Seed-Datenbanken und Test-UIs in Sekundenschnelle.

Spreadsheet with user data rows
Photo by Mika Baumeister on Unsplash

Jeder Frontend-Entwickler, QA-Ingenieur und Backend-Builder stößt auf die gleichen Probleme: Sie benötigen realistische Daten B. um eine Benutzeroberfläche zu testen, eine Datenbank zu starten oder eine API-Integration zu überprüfen. Das manuelle Schreiben von Seed-Skripten ist jedoch mühsam und mühsam Die Ergebnisse sehen falsch aus. Hartcodierte „John Doe“-Einträge in jeder Tabelle. Identische Zeitstempel. Preise, die sind immer 9,99.

Die Botoi-Mock-Data-Generator-API verfolgt einen anderen Ansatz. Sie definieren ein JSON-Schema, das die Form des beschreibt Geben Sie die gewünschten Daten ein und die API gibt ein Array von Datensätzen zurück, die dieser Form mit zufälligen, realistischen Werten entsprechen. Eins HTTP-Aufruf. Keine zu installierenden Bibliotheken, kein Fake-Setup, keine zu pflegenden Seed-Dateien.

So funktioniert es: Schema definieren, Daten zurückholen

Der Endpunkt akzeptiert ein Standard-JSON-Schemaobjekt und ein count Parameter. Es gibt ein Array von zurück generierte Datensätze, die Ihrem Schema entsprechen und deren Typen, Formate und Einschränkungen berücksichtigt werden.

Anfrage

curl -X POST https://api.botoi.com/v1/mock/generate \\
  -H "Content-Type: application/json" \\
  -d '{
    "schema": {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" },
        "age": { "type": "integer", "minimum": 18, "maximum": 80 }
      },
      "required": ["id", "name", "email"]
    },
    "count": 5
  }'

Antwort

{
  "success": true,
  "data": {
    "data": [
      { "id": 42, "name": "Sarah Chen", "email": "sarah@example.com", "age": 34 },
      { "id": 87, "name": "Marcus Johnson", "email": "marcus.j@example.com", "age": 28 },
      { "id": 15, "name": "Priya Patel", "email": "priya.patel@example.com", "age": 51 },
      { "id": 63, "name": "David Kim", "email": "dkim@example.com", "age": 45 },
      { "id": 91, "name": "Elena Rodriguez", "email": "elena.r@example.com", "age": 22 }
    ],
    "count": 5
  }
}

Das Schema folgt den JSON-Schemakonventionen. Satz type um den Datentyp zu steuern, format für Hinweise wie "email" oder "date-time", Und minimum/maximum für Zahlenbereiche. Der required Array teilt dem Generator mit, welche Felder in jedem Datensatz enthalten sein müssen.

Beispiel: E-Commerce-Bestellungen

Testen Sie ein Auftragsverwaltungs-Dashboard? Sie benötigen Aufträge mit Einzelposten, Preisen in Cent und Statuswerten. Hier ist ein Schema dafür.

curl -X POST https://api.botoi.com/v1/mock/generate \\
  -H "Content-Type: application/json" \\
  -d '{
    "schema": {
      "type": "object",
      "properties": {
        "order_id": { "type": "string" },
        "customer_email": { "type": "string", "format": "email" },
        "total_cents": { "type": "integer", "minimum": 500, "maximum": 50000 },
        "currency": { "type": "string" },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "sku": { "type": "string" },
              "quantity": { "type": "integer", "minimum": 1, "maximum": 10 },
              "price_cents": { "type": "integer", "minimum": 100, "maximum": 9999 }
            }
          }
        },
        "status": { "type": "string" }
      },
      "required": ["order_id", "customer_email", "total_cents", "currency"]
    },
    "count": 3
  }'

Antwort (erster angezeigter Datensatz):

{
  "success": true,
  "data": {
    "data": [
      {
        "order_id": "ord_7f3a2b",
        "customer_email": "lena.watts@example.com",
        "total_cents": 12450,
        "currency": "usd",
        "items": [
          { "sku": "TSHIRT-BLK-M", "quantity": 2, "price_cents": 2999 },
          { "sku": "HOODIE-GRY-L", "quantity": 1, "price_cents": 6452 }
        ],
        "status": "fulfilled"
      }
    ],
    "count": 3
  }
}

Jede Bestellung erhält eine andere ID, E-Mail-Adresse, Gesamtsumme und einen anderen Satz an Einzelposten. Der minimum Und maximum Einschränkungen auf quantity Und price_cents Werte bewahren innerhalb realistischer Grenzen.

Beispiel: Blogbeiträge

Erstellen Sie ein CMS oder eine Blog-Listing-Seite? Generieren Sie Beiträge mit Titeln, Slugs, Autoren, Zeitstempeln und Tags.

curl -X POST https://api.botoi.com/v1/mock/generate \\
  -H "Content-Type: application/json" \\
  -d '{
    "schema": {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "title": { "type": "string" },
        "slug": { "type": "string" },
        "author": { "type": "string" },
        "published_at": { "type": "string", "format": "date-time" },
        "tags": {
          "type": "array",
          "items": { "type": "string" }
        },
        "excerpt": { "type": "string" }
      },
      "required": ["id", "title", "slug", "author"]
    },
    "count": 10
  }'

Zehn Blogbeiträge mit unterschiedlichen Autoren, Titeln, Tag-Arrays und Veröffentlichungsdaten. Genug, um die Paginierung zu testen, Filter- und Sortierlogik, ohne ein einziges Gerät von Hand schreiben zu müssen.

Seeden Sie eine Datenbank in einem Skript

Kombinieren Sie den Scheindatengenerator mit einem Datenbank-Client und Sie erhalten ein vollständiges Seed-Skript. Hier ist eine Bash-Version, die 50 Benutzer in eine PostgreSQL-Datenbank einfügt:

#!/bin/bash
set -euo pipefail

API="https://api.botoi.com/v1/mock/generate"
DB_URL="postgresql://localhost:5432/myapp_dev"

echo "Generating 50 user records..."
USERS=\$(curl -s -X POST "\$API" \\
  -H "Content-Type: application/json" \\
  -d '{
    "schema": {
      "type": "object",
      "properties": {
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" },
        "age": { "type": "integer", "minimum": 18, "maximum": 80 },
        "signup_date": { "type": "string", "format": "date-time" }
      },
      "required": ["name", "email"]
    },
    "count": 50
  }')

echo "\$USERS" | jq -c '.data.data[]' | while read -r row; do
  NAME=\$(echo "\$row" | jq -r '.name')
  EMAIL=\$(echo "\$row" | jq -r '.email')
  AGE=\$(echo "\$row" | jq -r '.age')
  SIGNUP=\$(echo "\$row" | jq -r '.signup_date')

  psql "\$DB_URL" -c "INSERT INTO users (name, email, age, signup_date) VALUES ('\$NAME', '\$EMAIL', \$AGE, '\$SIGNUP');"
done

echo "Seeded 50 users into \$DB_URL"

Das Skript generiert 50 eindeutige Benutzerdatensätze und analysiert jeden einzelnen mit jqund fügt sie einzeln ein. Bei größeren Datensätzen leiten Sie die Ausgabe in einen Bulk weiter COPY Befehl oder eine Batch-Einfügung.

Node.js-Version

Wenn Ihr Stack JavaScript oder TypeScript ist, rufen Sie die API mit auf fetch und geben Sie die Ergebnisse weiter zu Ihrem ORM:

const API = "https://api.botoi.com/v1/mock/generate";

async function generateMockData(schema, count) {
  const response = await fetch(API, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ schema, count }),
  });
  const result = await response.json();
  return result.data.data;
}

const userSchema = {
  type: "object",
  properties: {
    name: { type: "string" },
    email: { type: "string", format: "email" },
    role: { type: "string" },
    created_at: { type: "string", format: "date-time" },
  },
  required: ["name", "email", "role"],
};

const users = await generateMockData(userSchema, 25);
console.log(users);

// Pass directly to your ORM
// await db.insert(usersTable).values(users);

Der generateMockData Funktion ist wiederverwendbar. Rufen Sie es mit einem beliebigen Schema und einer beliebigen Anzahl auf und fügen Sie dann das ein führt zu Drizzle, Prisma, Knex oder dem von Ihnen verwendeten ORM.

Warum eine API anstelle einer Bibliothek verwenden?

  • Keine Abhängigkeiten. Sie müssen weder faker.js noch Factory_bot oder andere sprachspezifische Dateien installieren Bibliothek. Ein einzelner HTTP-Aufruf funktioniert aus jeder Sprache, jedem Shell-Skript oder jeder CI-Pipeline.
  • Schemagesteuert. Dasselbe JSON-Schema, das Sie zur Validierung verwenden, kann Ihre Testdaten steuern. Veränderung Das Schema und die generierten Daten ändern sich damit. Keine Werksdefinitionen, die synchronisiert werden müssen.
  • Konsistentes Format. Jedes Teammitglied erhält Daten aus derselben Quelle. Kein „funktioniert auf meinem Rechner“ Unterschiede zwischen handgeschriebenen Vorrichtungen.
  • Teilbar. Kopieren Sie den Curl-Befehl in einen Slack-Thread, eine README-Datei oder eine CI-Konfiguration. Jedermann kann es ausführen, ohne etwas zu installieren.

Praktische Tipps

  • Speichern Sie Antworten als Fixture-Dateien. Führen Sie die API einmal aus und speichern Sie die JSON-Ausgabe unter fixtures/users.json, und laden Sie diese Datei in Ihre Tests. Dadurch bleiben Tests deterministisch und vermeidet Netzwerkaufrufe während Testläufen.
  • Verwenden Sie Formathinweise. Einstellung "format": "email" erzeugt E-Mail-förmige Zeichenfolgen. Weitere nützliche Formate sind: "date-time", "uri", Und "uuid".
  • Verschachteln Sie Objekte für komplexe Daten. Das Schema unterstützt Objekte innerhalb von Objekten und Arrays von Objekte. Modellieren Sie Ihre realen Datenbankbeziehungen, indem Sie eine verschachteln address Objekt in einem customer Objekt.
  • Kombinieren Sie es mit anderen Botoi-Endpunkten. Generieren Sie Scheinbenutzer und leiten Sie dann jede E-Mail an weiter /v1/disposable-email/check um Ihren E-Mail-Validierungsablauf durchgängig zu testen.

FAQ

Benötige ich einen API-Schlüssel, um die Mock-Data-Generator-API zu verwenden?
Nein. Der anonyme Zugriff ist mit 5 Anfragen pro Minute und IP-basierter Ratenbegrenzung möglich. Melden Sie sich für einen höheren Durchsatz für einen kostenlosen API-Schlüssel unter botoi.com/api an.
Welche JSON-Schemafunktionen unterstützt der Endpunkt?
Der Endpunkt unterstützt Standard-JSON-Schematypen (String, Ganzzahl, Zahl, Boolescher Wert, Objekt, Array), Formathinweise wie „E-Mail“ und „URI“, Min/Max-Einschränkungen für Zahlen und erforderliche Felddeklarationen. Verschachtelte Objekte und Arrays von Objekten funktionieren wie erwartet.
Wie viele Datensätze kann ich in einer einzigen Anfrage generieren?
Stellen Sie das Feld „Anzahl“ im Anforderungstext auf die gewünschte Anzahl von Datensätzen ein. Der Endpunkt unterstützt die Generierung von bis zu 100 Datensätzen pro Anruf.
Sind die generierten Daten deterministisch?
Nein. Jede Anfrage erzeugt unterschiedliche Zufallswerte. Wenn Sie reproduzierbare Daten benötigen, speichern Sie die Antwort in einer Fixture-Datei und laden Sie sie in Ihre Tests.
Kann ich dies zum Seeding einer Produktionsdatenbank verwenden?
Der Endpunkt generiert gefälschte Daten für Entwicklungs- und Testzwecke. Die Namen, E-Mail-Adressen und anderen Werte sind fiktiv. Verwenden Sie generierte Daten nicht als Produktionsaufzeichnungen.

Starte mit botoi zu entwickeln

150+ API-Endpunkte für Abfragen, Textverarbeitung, Bildgenerierung und Entwickler-Tools. Kostenloser Tarif, keine Kreditkarte nötig.