通过一次 API 调用从任何 JSON 模式生成类型化模拟数据
将 JSON 架构发送到 Botoi 模拟数据生成器 API,并获取用户个人资料、电子商务订单、博客文章等的真实虚假数据。 在几秒钟内建立种子数据库并测试 UI。
每个前端开发人员、QA 工程师和后端构建人员都会遇到同样的问题:您需要真实的数据 测试 UI、播种数据库或验证 API 集成,但手动编写种子脚本非常乏味且 结果看起来很假。 每个表中的硬编码“John Doe”条目。 相同的时间戳。 价格是 总是9.99。
Botoi 模拟数据生成器 API 采用不同的方法。 您定义一个描述形状的 JSON 模式 数据,API 返回与该形状与随机、实际值相匹配的记录数组。 一 HTTP 调用。 无需安装库,无需伪造设置,无需维护种子文件。
它是如何工作的:定义模式,获取数据
端点接受标准 JSON Schema 对象和 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
}
}
每个订单都有不同的 ID、电子邮件、总计和行项目集。 这 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);
这 generateMockData 函数是可重用的。 使用任何模式和计数调用它,然后插入
结果会变成 Drizzle、Prisma、Knex 或您使用的任何 ORM。
为什么使用 API 而不是库?
- 没有依赖性。 您不需要安装 faker.js、factory_bot 或任何特定于语言的 图书馆。 单个 HTTP 调用适用于任何语言、shell 脚本或 CI 管道。
- 模式驱动。 用于验证的相同 JSON 架构可以驱动您的测试数据。 改变 模式和生成的数据随之改变。 没有工厂定义需要保持同步。
- 格式一致。 每个团队成员都从同一来源获取数据。 没有“在我的机器上运行” 手写夹具之间的差异。
- 可分享。 将curl 命令复制到Slack 线程、自述文件或CI 配置中。 任何人 无需安装任何东西即可运行它。
实用技巧
-
将响应保存为固定文件。 运行 API 一次,将 JSON 输出保存到
fixtures/users.json,并在测试中加载该文件。 这使测试保持确定性并且 避免测试运行期间的网络调用。 -
使用格式提示。 环境
"format": "email"产生电子邮件形状的字符串。 其他有用的格式包括"date-time","uri", 和"uuid"。 -
复杂数据的嵌套对象。 该模式支持对象内的对象和数组
对象。 通过嵌套来建模您的真实数据库关系
addressa 内的对象customer目的。 -
与其他 Botoi 端点结合使用。 生成模拟用户,然后将每封电子邮件传递给
/v1/disposable-email/check端到端测试您的电子邮件验证流程。
FAQ
- 我是否需要 API 密钥才能使用模拟数据生成器 API?
- 不需要。匿名访问的速度为每分钟 5 个请求,并具有基于 IP 的速率限制。 为了获得更高的吞吐量,请在 botoi.com/api 上注册免费的 API 密钥。
- 端点支持哪些 JSON 模式功能?
- 该端点支持标准 JSON 模式类型(字符串、整数、数字、布尔值、对象、数组)、格式提示(例如“email”和“uri”)、数字的最小/最大约束以及必需的字段声明。 嵌套对象和对象数组按预期工作。
- 一次请求可以生成多少条记录?
- 将请求正文中的“计数”字段设置为您想要的记录数。 终端支持每次通话最多生成 100 条记录。
- 生成的数据是确定性的吗?
- 不会。每个请求都会产生不同的随机值。 如果您需要可重现的数据,请将响应保存到固定文件中并将其加载到测试中。
- 我可以用它来为生产数据库提供种子吗?
- 端点生成用于开发和测试目的的虚假数据。 姓名、电子邮件和其他值都是虚构的。 请勿将生成的数据用作生产记录。
开始使用 botoi 构建
150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。