Langsung ke konten
Tutorial

Hasilkan data tiruan yang diketik dari skema JSON mana pun dengan satu panggilan API

| 5 min read

Kirim skema JSON ke API pembuat data tiruan Botoi dan dapatkan kembali data palsu yang realistis untuk profil pengguna, pesanan e-niaga, postingan blog, dan banyak lagi. Database benih dan uji UI dalam hitungan detik.

Spreadsheet with user data rows
Photo by Mika Baumeister on Unsplash

Setiap pengembang frontend, teknisi QA, dan pembuat backend mengalami masalah yang sama: Anda memerlukan data yang realistis untuk menguji UI, melakukan seed database, atau memverifikasi integrasi API, tetapi menulis skrip seed dengan tangan adalah hal yang membosankan dan hasilnya terlihat palsu. Entri "John Doe" yang di-hardcode di setiap tabel. Stempel waktu yang identik. Harga itu selalu 9,99.

API pembuat data tiruan Botoi menggunakan pendekatan yang berbeda. Anda menentukan skema JSON yang menjelaskan bentuk data yang Anda inginkan, dan API mengembalikan serangkaian catatan yang cocok dengan bentuk tersebut dengan nilai acak dan realistis. Satu Panggilan HTTP. Tidak ada perpustakaan yang harus diinstal, tidak ada pengaturan palsu, tidak ada file awal yang harus dipelihara.

Cara kerjanya: tentukan skema, dapatkan kembali data

Titik akhir menerima objek Skema JSON standar dan a count parameter. Ini mengembalikan array catatan yang dihasilkan cocok dengan skema Anda, dengan tipe, format, dan batasan yang dipatuhi.

Meminta

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
  }'

Tanggapan

{
  "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
  }
}

Skema ini mengikuti konvensi Skema JSON. Mengatur type untuk mengontrol tipe data, format untuk petunjuk seperti "email" atau "date-time", Dan minimum/maximum untuk rentang numerik. Itu required susunan memberi tahu generator bidang mana yang harus muncul di setiap catatan.

Contoh: pesanan e-commerce

Menguji dasbor manajemen pesanan? Anda memerlukan pesanan dengan item baris, harga dalam sen, dan nilai status. Berikut adalah skema untuk itu.

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
  }'

Respons (catatan pertama ditampilkan):

{
  "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
  }
}

Setiap pesanan mendapat ID, email, total, dan kumpulan item baris yang berbeda. Itu minimum Dan maximum kendala pada quantity Dan price_cents menjaga nilai-nilai dalam batas-batas yang realistis.

Contoh: postingan blog

Membangun CMS atau halaman daftar blog? Hasilkan postingan dengan judul, siput, penulis, stempel waktu, dan tag.

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
  }'

Sepuluh postingan blog dengan penulis, judul, susunan tag, dan tanggal publikasi berbeda. Cukup untuk menguji pagination, memfilter, dan mengurutkan logika tanpa menulis satu perlengkapan pun dengan tangan.

Benih database dalam satu skrip

Gabungkan generator data tiruan dengan klien database dan Anda akan mendapatkan skrip seed yang lengkap. Berikut adalah versi bash yang memasukkan 50 pengguna ke dalam database PostgreSQL:

#!/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"

Skrip ini menghasilkan 50 catatan pengguna unik, mem-parsing masing-masing catatan tersebut jq, dan menyisipkannya satu per satu. Untuk kumpulan data yang lebih besar, masukkan keluarannya ke dalam jumlah besar COPY perintah atau sisipan batch.

Versi Node.js

Jika tumpukan Anda adalah JavaScript atau TypeScript, panggil API dengan fetch dan menyampaikan hasilnya ke ORM Anda:

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);

Itu generateMockData fungsi dapat digunakan kembali. Sebut saja dengan skema apa saja dan hitung, lalu masukkan hasilnya menjadi Gerimis, Prisma, Knex, atau ORM mana pun yang Anda gunakan.

Mengapa menggunakan API dan bukan perpustakaan?

  • Tidak ada ketergantungan. Anda tidak perlu menginstal faker.js, factory_bot, atau bahasa tertentu perpustakaan. Satu panggilan HTTP dapat digunakan dari bahasa apa pun, skrip shell, atau pipeline CI apa pun.
  • Didorong oleh skema. Skema JSON yang sama yang Anda gunakan untuk validasi dapat mendorong data pengujian Anda. Perubahan skema, dan data yang dihasilkan berubah bersamanya. Tidak ada definisi pabrik yang perlu disinkronkan.
  • Format yang konsisten. Setiap anggota tim mendapatkan data dari sumber yang sama. Tidak ada "berfungsi di mesin saya" perbedaan antara perlengkapan tulisan tangan.
  • Dapat dibagikan. Salin perintah curl ke thread Slack, README, atau konfigurasi CI. Siapapun dapat menjalankannya tanpa menginstal apa pun.

Kiat praktis

  • Simpan tanggapan sebagai file perlengkapan. Jalankan API sekali, simpan output JSON ke fixtures/users.json, dan muat file itu dalam pengujian Anda. Hal ini membuat pengujian bersifat deterministik dan menghindari panggilan jaringan selama pengujian dijalankan.
  • Gunakan petunjuk format. Pengaturan "format": "email" menghasilkan string berbentuk email. Format berguna lainnya termasuk "date-time", "uri", Dan "uuid".
  • Objek sarang untuk data kompleks. Skema mendukung objek di dalam objek dan array objek. Modelkan relasi database Anda yang sebenarnya dengan membuat sarang address benda di dalam a customer obyek.
  • Gabungkan dengan titik akhir Botoi lainnya. Hasilkan pengguna tiruan, lalu teruskan setiap email ke /v1/disposable-email/check untuk menguji alur validasi email Anda secara menyeluruh.

FAQ

Apakah saya memerlukan kunci API untuk menggunakan API pembuat data tiruan?
Tidak. Akses anonim tersedia dengan 5 permintaan per menit dengan pembatasan kecepatan berbasis IP. Untuk throughput yang lebih tinggi, daftar untuk mendapatkan kunci API gratis di botoi.com/api.
Fitur skema JSON apa yang didukung titik akhir?
Titik akhir mendukung tipe Skema JSON standar (string, bilangan bulat, angka, boolean, objek, larik), petunjuk format seperti "email" dan "uri", batasan min/maks untuk angka, dan deklarasi bidang yang diperlukan. Objek bersarang dan array objek berfungsi seperti yang diharapkan.
Berapa banyak catatan yang dapat saya hasilkan dalam satu permintaan?
Setel bidang "hitungan" di isi permintaan ke jumlah rekaman yang Anda inginkan. Titik akhir mendukung pembuatan hingga 100 catatan per panggilan.
Apakah data yang dihasilkan bersifat deterministik?
Tidak. Setiap permintaan menghasilkan nilai acak yang berbeda. Jika Anda memerlukan data yang dapat direproduksi, simpan respons ke file perlengkapan dan muat dalam pengujian Anda.
Bisakah saya menggunakan ini untuk menyemai database produksi?
Titik akhir menghasilkan data palsu untuk tujuan pengembangan dan pengujian. Nama, email, dan nilai lainnya bersifat fiktif. Jangan gunakan data yang dihasilkan sebagai catatan produksi.

Mulai membangun dengan botoi

150+ endpoint API untuk pencarian, pemrosesan teks, pembuatan gambar, dan utilitas developer. Paket gratis, tanpa kartu kredit.