Dữ liệu mẫu từ JSON Schema API
Sinh JSON mẫu như thật từ JSON Schema (kiểu, format, enum, pattern, khoảng giá trị, $ref, oneOf / allOf), có kiểm tra lại theo schema.
API mock theo schema biến một JSON Schema thành dữ liệu mẫu: object với các thuộc tính bắt buộc và tuỳ chọn, mảng trong khoảng minItems / maxItems, số trong minimum / maximum và multipleOf, chuỗi trong giới hạn độ dài, enum, const, examples và các format thông dụng (email, date, date-time, uuid, uri, hostname, ipv4, ipv6).
Các pattern đơn giản (chữ số, lớp ký tự, lặp như ^0[35789]\d{8}$) cho ra chuỗi khớp, $ref nội bộ (#/$defs/..., #/definitions/...) được giải, allOf được gộp và oneOf / anyOf chọn một nhánh. Tối đa 100 phần tử mỗi lần; cùng seed cho cùng dữ liệu nên fixture luôn ổn định.
Mỗi phần tử sinh ra được kiểm tra bằng cùng bộ kiểm tra của API JSON validator (draft 2020-12): valid cho biết tất cả có hợp lệ không. Các từ khoá bộ sinh chưa hỗ trợ (not, if / then, pattern phức tạp) có thể tạo phần tử không hợp lệ, được đếm trong invalid_items.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
schema | body | object | có | JSON Schema. | |
count | body | number | không | 1 | Số phần tử (1–100). |
seed | body | string | không | Seed để sinh lại đúng dữ liệu. |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/schema-mock" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"schema":{"type":"object","required":["id","email"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"age":{"type":"integer","minimum":18,"maximum":99},"phone":{"type":"string","pattern":"^0[35789]\\d{8}$"}}},"count":1,"seed":"s"}'const res = await fetch('https://apibox.io.vn/v1/schema-mock', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"schema": {
"type": "object",
"required": [
"id",
"email"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"email": {
"type": "string",
"format": "email"
},
"age": {
"type": "integer",
"minimum": 18,
"maximum": 99
},
"phone": {
"type": "string",
"pattern": "^0[35789]\\d{8}$"
}
}
},
"count": 1,
"seed": "s"
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/schema-mock",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"schema": {"type": "object", "required": ["id", "email"], "properties": {"id": {"type": "string", "format": "uuid"}, "email": {"type": "string", "format": "email"}, "age": {"type": "integer", "minimum": 18, "maximum": 99}, "phone": {"type": "string", "pattern": "^0[35789]\\d{8}$"}}}, "count": 1, "seed": "s"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/schema-mock');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"schema":{"type":"object","required":["id","email"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"age":{"type":"integer","minimum":18,"maximum":99},"phone":{"type":"string","pattern":"^0[35789]\\\\d{8}$"}}},"count":1,"seed":"s"}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"seed": "s",
"count": 1,
"valid": true,
"data": [
{
"id": "dacf6276-1f2c-4cc4-830a-b315d3dc1f17",
"email": "lorem.river4@example.com",
"age": 89,
"phone": "0913924197"
}
]
}
Ứng dụng
- Mock phản hồi API cho front-end khi back-end chưa xong
- Fixture, dữ liệu mẫu cho test tự động
- Kiểm tra schema có chấp nhận đúng dữ liệu bạn nghĩ không
- Ví dụ payload cho tài liệu API
Hỏi đáp
Hỗ trợ draft nào?
Các từ khoá thông dụng của draft 7, 2019-09 và 2020-12. Kết quả được kiểm tra theo draft 2020-12.
Có hỗ trợ $ref từ xa không?
Không, chỉ tham chiếu trong cùng schema (#/...). Hãy gộp schema trước.
Có lấy lại đúng dữ liệu cũ được không?
Được, truyền cùng seed và count; seed đã dùng luôn được trả về.
API liên quan
Webhook Tester
Tạo một URL riêng ghi lại mọi request HTTP gửi tới nó – method, header, query, body – rồi xem trực tiếp trên trình duyệt hoặc qua API.
👤Dữ liệu giả tiếng Việt
Dữ liệu test tiếng Việt như thật: họ tên, địa chỉ theo bản đồ hành chính 2025, số di động theo nhà mạng, CCCD và MST đúng cấu trúc, công ty, tài khoản ngân hàng.
◧So sánh hai ảnh
So sánh hai ảnh theo từng điểm ảnh (khoảng cách màu theo cảm nhận, bỏ qua khử răng cưa) và cho biết tỷ lệ điểm ảnh thay đổi, vùng thay đổi và ảnh khác biệt được tô màu.