Генерируйте типизированные макетные данные из любой схемы JSON с помощью одного вызова API.
Отправьте схему JSON в API генератора макетных данных Botoi и получите реалистичные поддельные данные для профилей пользователей, заказов электронной коммерции, сообщений в блогах и многого другого. Заполните базы данных и протестируйте пользовательские интерфейсы за считанные секунды.
Каждый фронтенд-разработчик, инженер по обеспечению качества и разработчик серверной части сталкивается с одним и тем же препятствием: вам нужны реалистичные данные. для тестирования пользовательского интерфейса, заполнения базы данных или проверки интеграции API, но написание исходных сценариев вручную утомительно и результаты выглядят фальшивыми. Жестко закодированные записи «Джон Доу» в каждой таблице. Идентичные временные метки. Цены, которые всегда 9,99.
API генератора макетных данных Botoi использует другой подход. Вы определяете схему JSON, описывающую форму нужные вам данные, а API возвращает массив записей, соответствующих этой форме, со случайными реалистичными значениями. Один HTTP-вызов. Никаких библиотек для установки, никаких настроек мошенников, никаких исходных файлов, которые нужно поддерживать.
Как это работает: определить схему, получить данные обратно
Конечная точка принимает стандартный объект схемы JSON и count параметр. Он возвращает массив
созданные записи, соответствующие вашей схеме, с соблюдением типов, форматов и ограничений.
Запрос
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
}'
Ответ
{
"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
}
}
Схема соответствует соглашениям схемы JSON. Набор type для управления типом данных,
format для подсказок типа "email" или "date-time", и
minimum/maximum для числовых диапазонов. required массив
сообщает генератору, какие поля должны присутствовать в каждой записи.
Пример: заказы электронной коммерции
Тестируете панель управления заказами? Вам нужны заказы с позициями, ценами в центах и значениями статуса. Вот схема для этого.
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
}'
Ответ (показана первая запись):
{
"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
}
}
Каждый заказ получает свой идентификатор, адрес электронной почты, общую сумму и набор позиций. minimum и
maximum ограничения на quantity и price_cents сохранять ценности
в реалистичных пределах.
Пример: сообщения в блоге
Создаете CMS или страницу со списком блогов? Создавайте сообщения с заголовками, фрагментами, авторами, временными метками и тегами.
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
}'
Десять постов в блоге с разными авторами, названиями, массивами тегов и датами публикации. Достаточно проверить пагинацию, логика фильтрации и сортировки без написания ни одного прибора вручную.
Заполнение базы данных одним скриптом
Объедините генератор макетных данных с клиентом базы данных, и вы получите полный исходный сценарий. Вот версия bash, которая вставляет 50 пользователей в базу данных 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"
Скрипт генерирует 50 уникальных записей пользователей, анализирует каждую с помощью jqи вставляет их по одному.
Для больших наборов данных перенаправьте выходные данные в общий объем. COPY команда или пакетная вставка.
Версия Node.js
Если ваш стек — JavaScript или TypeScript, вызовите API с помощью fetch и передать результаты
в ваш 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);
The generateMockData функция является многоразовой. Вызовите его с любой схемой и счетчиком, затем вставьте
результаты в Drizzle, Prisma, Knex или любой другой ORM, который вы используете.
Зачем использовать API вместо библиотеки?
- Никаких зависимостей. Вам не нужно устанавливать faker.js, Factory_bot или какой-либо другой язык, специфичный для этого языка. библиотека. Один HTTP-вызов работает с любого языка, сценария оболочки или конвейера CI.
- Управляемый схемой. Та же схема JSON, которую вы используете для проверки, может управлять вашими тестовыми данными. Изменить схема, и сгенерированные данные изменяются вместе с ней. Никаких заводских определений для синхронизации.
- Последовательный формат. Каждый член команды получает данные из одного и того же источника. Никаких «работает на моей машине» различия между рукописными светильниками.
- Поделиться. Скопируйте команду curl в поток Slack, README или конфигурацию CI. Любой можно запустить, ничего не устанавливая.
Практические советы
-
Сохраняйте ответы в виде файлов фиксации. Запустите API один раз, сохраните вывод JSON в
fixtures/users.jsonи загрузите этот файл в свои тесты. Это сохраняет тесты детерминированными и позволяет избежать сетевых вызовов во время тестовых запусков. -
Используйте подсказки по формату. Параметр
"format": "email"создает строки в форме электронного письма. Другие полезные форматы включают в себя"date-time","uri", и"uuid". -
Встраивайте объекты для сложных данных. Схема поддерживает объекты внутри объектов и массивов
объекты. Смоделируйте свои реальные отношения с базой данных, вложив
addressобъект внутриcustomerобъект. -
Объединитесь с другими конечными точками Ботоя. Создайте фиктивных пользователей, а затем передайте каждое электронное письмо
/v1/disposable-email/checkчтобы протестировать весь поток проверки электронной почты.
FAQ
- Нужен ли мне ключ API для использования API генератора фиктивных данных?
- Нет. Анонимный доступ возможен со скоростью 5 запросов в минуту с ограничением скорости по IP. Для повышения производительности зарегистрируйтесь и получите бесплатный ключ API на сайте botoi.com/api.
- Какие функции схемы JSON поддерживает конечная точка?
- Конечная точка поддерживает стандартные типы схемы JSON (строка, целое число, число, логическое значение, объект, массив), подсказки по формату, такие как «email» и «uri», ограничения минимального и максимального числа для чисел и объявления обязательных полей. Вложенные объекты и массивы объектов работают должным образом.
- Сколько записей я могу создать за один запрос?
- Установите в поле «count» в теле запроса необходимое количество записей. Конечная точка поддерживает создание до 100 записей за один вызов.
- Являются ли сгенерированные данные детерминированными?
- Нет. Каждый запрос выдает разные случайные значения. Если вам нужны воспроизводимые данные, сохраните ответ в файле фикстур и загрузите его в свои тесты.
- Могу ли я использовать это для заполнения рабочей базы данных?
- Конечная точка генерирует поддельные данные для целей разработки и тестирования. Имена, адреса электронной почты и другие значения являются вымышленными. Не используйте сгенерированные данные в качестве производственных записей.
Начните разработку с botoi
150+ API-эндпоинтов для поиска, обработки текста, генерации изображений и утилит для разработчиков. Бесплатный тариф, без банковской карты.