Tạo dữ liệu JSON giả lập cho API: dựng schema, sinh bản ghi và dùng vào đâu
Công cụ cho bạn khai báo danh sách trường với tên tùy ý và kiểu dữ liệu chọn từ mười bảy loại có sẵn, rồi sinh ra một mảng JSON gồm tối đa một trăm bản ghi giá trị ngẫu nhiên. Dữ liệu mẫu dùng tên người, tên thành phố và định dạng ngày giờ hợp với dự án Việt Nam, kết quả in ra đã thụt lề sẵn và có nút sao chép để dán thẳng vào mã nguồn hay vào máy chủ giả lập.
Tính năng nổi bật
- Khai báo trường tự do: gõ tên trường và chọn kiểu, thêm bớt trường bằng nút riêng cho từng dòng
- Mười bảy kiểu dữ liệu gồm mã định danh, họ tên, thư điện tử, số điện thoại, địa chỉ, thành phố, quốc gia, ngày, ngày giờ, số, giá tiền, giá trị đúng sai, đường dẫn, ảnh, đoạn văn, câu và từ
- Công tắc mảng cho từng trường, khi bật thì trường đó nhận một mảng ba phần tử cùng kiểu
- Chọn số bản ghi cần sinh, từ một tới một trăm trong một lần bấm
- Mã định danh sinh bằng hàm tạo UUID sẵn có của trình duyệt nên không trùng nhau
- Kiểu ảnh trả về đường dẫn tới dịch vụ ảnh mẫu kèm hạt giống ngẫu nhiên, mỗi bản ghi một ảnh khác nhau
- Kết quả in ra JSON đã thụt lề hai khoảng trắng, đọc được ngay không cần định dạng lại
- Chạy hoàn toàn trong trình duyệt, không gửi schema hay dữ liệu sinh ra đi đâu
Vì sao dữ liệu giả lập quyết định tốc độ của một dự án nhiều người
Trong một dự án có cả phần giao diện và phần máy chủ, thứ chặn tiến độ thường không phải là độ khó của mã nguồn mà là thứ tự phụ thuộc. Người làm giao diện không dựng được danh sách nếu chưa có dữ liệu, mà dữ liệu thì phải chờ người làm máy chủ hoàn thiện điểm cuối. Cách gỡ nút thắt này là hai bên thống nhất hình dạng dữ liệu trước, rồi phía giao diện tự sinh ra một tập dữ liệu đúng hình dạng đó để làm việc song song. Tự gõ tay tập dữ liệu ấy thì vừa mất thời gian vừa tạo ra một cái bẫy quen thuộc: người ta gõ ba bản ghi đẹp đẽ, tên ngắn, không dấu, không giá trị rỗng, và giao diện chạy hoàn hảo cho tới ngày nối vào dữ liệu thật thì vỡ bố cục. Sinh ra vài chục bản ghi với họ tên tiếng Việt có dấu, giá tiền hàng triệu và đoạn văn dài giúp bạn phát hiện sớm những chỗ tràn chữ, sai định dạng số và cột bị đẩy. Đó là giá trị thật của công cụ này chứ không phải chuyện tiết kiệm vài phút gõ phím.
Lợi ích khi sử dụng
- Làm giao diện song song với phần máy chủ thay vì ngồi chờ điểm cuối
- Phát hiện sớm lỗi tràn chữ và lệch cột nhờ dữ liệu có dấu và có độ dài thật
- Dựng lại schema trong vài giây khi hợp đồng dữ liệu thay đổi
- Có sẵn tên người và thành phố Việt Nam nên bản trình bày trông đúng ngữ cảnh
- Không cần dựng máy chủ hay cài thư viện sinh dữ liệu chỉ để lấy vài chục bản ghi
Cách sinh một tập dữ liệu JSON giả lập
- 1Sửa ba trường mặc định hoặc bấm thêm trường để dựng đúng hình dạng dữ liệu mà điểm cuối thật sẽ trả về.
- 2Với mỗi trường, gõ tên đúng như tên khóa trong JSON rồi chọn kiểu dữ liệu phù hợp trong danh sách thả xuống.
- 3Bật công tắc mảng cho những trường vốn là danh sách, ví dụ nhãn hoặc ảnh phụ, mỗi trường như vậy sẽ nhận ba phần tử.
- 4Nhập số bản ghi cần sinh rồi bấm nút tạo, nên lấy ít nhất hai mươi bản ghi để thấy được các trường hợp chữ dài và số lớn.
- 5Bấm sao chép rồi dán kết quả vào tệp dữ liệu mẫu trong dự án, vào một máy chủ giả lập, hoặc vào bài kiểm thử tự động.
Mười bảy kiểu dữ liệu sinh ra cái gì
Kiểu mã định danh gọi hàm tạo UUID sẵn có của trình duyệt, cho ra chuỗi ba mươi sáu ký tự theo phiên bản thứ tư, bảo đảm không trùng giữa các bản ghi. Kiểu họ tên lấy ngẫu nhiên trong năm tên Việt có dấu, kiểu thành phố lấy trong năm thành phố lớn, còn kiểu quốc gia luôn trả về Việt Nam. Kiểu thư điện tử ghép chữ user với một số ba chữ số rồi gắn tên miền dành riêng cho ví dụ, nên chắc chắn không đụng hộp thư thật của ai. Kiểu số điện thoại tạo chuỗi mười chữ số mở đầu bằng số không. Kiểu ngày trả về chuỗi theo chuẩn quốc tế dạng năm, tháng, ngày, còn kiểu ngày giờ trả về chuỗi đầy đủ theo múi giờ chuẩn quốc tế kết thúc bằng chữ Z, cả hai đều rơi vào khoảng một năm trở lại đây. Kiểu số cho ra số nguyên dưới một nghìn, kiểu giá tiền cho ra số nguyên tới gần mười triệu, phù hợp với đơn vị đồng vì không có phần thập phân. Kiểu đường dẫn và kiểu ảnh ghép chuỗi ngẫu nhiên vào phần cuối, riêng kiểu ảnh trỏ tới một dịch vụ ảnh mẫu công cộng với kích thước bốn trăm nhân ba trăm. Ba kiểu văn bản cuối trả về nội dung tiếng Latinh cố định.
Cấu trúc kết quả và những gì công cụ chưa dựng được
Kết quả luôn là một mảng ở cấp ngoài cùng, mỗi phần tử là một đối tượng phẳng gồm đúng các trường bạn khai báo. Đây là hình dạng hợp với phần lớn điểm cuối trả về danh sách, nhưng có mấy thứ công cụ chưa làm được và bạn cần biết trước. Thứ nhất là đối tượng lồng nhau: bạn không khai báo được một trường kiểu đối tượng chứa các trường con, nên với schema dạng người dùng có địa chỉ gồm phường, quận, thành phố, bạn phải sinh phẳng rồi tự gom lại bằng tay. Thứ hai là vỏ bọc phản hồi: nhiều dự án bọc dữ liệu trong một đối tượng có thêm mã trạng thái, thông điệp và khối phân trang, phần này bạn phải tự thêm quanh mảng kết quả. Thứ ba là quan hệ giữa các bảng: mã định danh sinh ra hoàn toàn ngẫu nhiên nên không có chuyện bản ghi đơn hàng trỏ đúng vào một mã khách hàng có thật trong tập kia. Thứ tư là mảng luôn cố định ba phần tử, không đổi được. Với những nhu cầu này, cách xử lý nhanh nhất là lấy kết quả ở đây làm nền rồi chỉnh lại bằng trình soạn thảo.
Một lưu ý về đầu số điện thoại sinh ra
Kiểu số điện thoại tạo ra chuỗi mười chữ số bắt đầu bằng số không, nhưng chữ số ngay sau đó là ngẫu nhiên từ một tới chín. Trong khi đó đầu số di động Việt Nam hiện chỉ dùng các nhóm bắt đầu bằng 03, 05, 07, 08 và 09. Nghĩa là tập dữ liệu bạn sinh ra sẽ có lẫn những số kiểu 01 hay 02, không phải đầu số di động hợp lệ. Điều này không gây vấn đề khi bạn chỉ cần chỗ chứa để dựng giao diện, vì nhìn vào vẫn ra dáng một số điện thoại và độ dài vẫn đúng mười ký tự. Nhưng nó gây rắc rối trong hai tình huống. Một là khi bạn dùng chính tập dữ liệu này để kiểm thử phần kiểm tra hợp lệ ở biểu mẫu, kết quả sẽ có những bản ghi bị từ chối một cách khó hiểu. Hai là khi bạn nạp thẳng vào cơ sở dữ liệu có ràng buộc định dạng, lệnh nạp sẽ báo lỗi ở vài dòng ngẫu nhiên. Cách xử lý đơn giản là sau khi sao chép, tìm và thay các chuỗi mở đầu không hợp lệ, hoặc chấp nhận rằng đây chỉ là dữ liệu để nhìn chứ không phải để kiểm thử ràng buộc.
Đưa dữ liệu sinh ra vào quy trình làm việc
Có bốn chỗ dùng phổ biến. Chỗ thứ nhất là tệp dữ liệu tĩnh trong dự án giao diện: bạn lưu kết quả thành một tệp JSON rồi nhập vào thẳng như một mô đun, cách này nhanh nhất để dựng bố cục nhưng nhớ gỡ bỏ trước khi lên bản chính thức. Chỗ thứ hai là máy chủ giả lập: các công cụ dựng máy chủ giả lập từ một tệp JSON sẽ tự sinh ra các điểm cuối tương ứng với từng khóa cấp cao nhất, nên bạn chỉ cần bọc mảng kết quả vào một khóa đặt tên theo tài nguyên. Chỗ thứ ba là bài kiểm thử tự động: dán mảng này làm dữ liệu đầu vào cho các bài kiểm thử thành phần giao diện, đặc biệt hữu ích khi cần kiểm tra trạng thái danh sách dài và trạng thái danh sách rỗng. Chỗ thứ tư là bản trình bày cho khách: một danh sách hai mươi bản ghi với tên người Việt và giá tiền thật trông thuyết phục hơn nhiều so với ba dòng chữ mẫu lặp lại. Ở chỗ thứ tư này, nhớ rằng đường dẫn ảnh trỏ tới một dịch vụ bên ngoài nên máy trình bày phải có mạng.
Dữ liệu giả lập và ranh giới với dữ liệu thật
Một thói quen nên giữ là không bao giờ trộn dữ liệu giả lập với dữ liệu thật trong cùng một môi trường. Lý do rõ nhất là thư điện tử: nếu tập dữ liệu mẫu lọt vào hệ thống gửi thư, các địa chỉ dạng ví dụ sẽ dội ngược hàng loạt và làm giảm uy tín tên miền gửi của bạn. Công cụ này dùng tên miền dành riêng cho mục đích ví dụ nên không có hộp thư thật nào bị làm phiền, nhưng tỷ lệ dội ngược cao vẫn ảnh hưởng tới điểm tin cậy. Lý do thứ hai là khi kiểm thử kết thúc, việc phân biệt bản ghi nào là rác đã sinh ra và bản ghi nào là dữ liệu thật của người dùng đầu tiên trở nên rất khó nếu chúng nằm chung một bảng. Cách làm an toàn là giữ dữ liệu giả lập ở tầng giao diện hoặc trong một cơ sở dữ liệu riêng cho môi trường phát triển, và nếu buộc phải nạp vào cơ sở dữ liệu chung thì thêm một trường đánh dấu để về sau xóa sạch bằng một câu lệnh. Ở chiều ngược lại, tuyệt đối không lấy dữ liệu thật của khách hàng làm dữ liệu mẫu cho môi trường thử nghiệm.
Câu hỏi thường gặp (FAQ)
Công cụ này có tạo ra một điểm cuối API để gọi thử không?
Không. Nó sinh ra dữ liệu JSON chứ không dựng máy chủ, nên không có địa chỉ nào để gọi. Muốn có điểm cuối thật sự, bạn lưu kết quả thành tệp rồi nạp vào một công cụ dựng máy chủ giả lập chạy trên máy, hoặc đưa lên một dịch vụ giả lập trực tuyến. Dữ liệu ở đây là phần nội dung, phần vỏ máy chủ bạn tự dựng.
Sinh được tối đa bao nhiêu bản ghi một lần?
Một trăm bản ghi trong một lần bấm. Nếu cần nhiều hơn, bạn bấm tạo vài lần rồi ghép các mảng lại trong trình soạn thảo, nhớ bỏ dấu ngoặc vuông ở giữa và thêm dấu phẩy. Với dữ liệu để dựng giao diện thì hai mươi tới năm mươi bản ghi thường đã đủ thấy mọi trường hợp bố cục cần kiểm tra.
Có khai báo được trường lồng nhau không?
Chưa. Mỗi bản ghi là một đối tượng phẳng gồm đúng các trường bạn liệt kê, không có kiểu đối tượng chứa trường con. Với schema có cấu trúc lồng, cách nhanh nhất là sinh phẳng ở đây rồi dùng tính năng tìm và thay trong trình soạn thảo để gom các khóa liên quan vào một khối con.
Bật công tắc mảng thì được bao nhiêu phần tử?
Luôn là ba phần tử, con số này cố định và chưa đổi được. Nếu bạn cần số lượng khác, cách xử lý là sinh ra rồi tự thêm hoặc bớt phần tử trong trình soạn thảo. Với dữ liệu để dựng giao diện, ba phần tử thường đủ để thấy cách bố trí danh sách con hoạt động ra sao.
Mã định danh giữa các bản ghi có trùng nhau không?
Không. Kiểu mã định danh gọi hàm tạo UUID sẵn có của trình duyệt, cho ra chuỗi theo phiên bản thứ tư với không gian giá trị đủ lớn để coi như không bao giờ trùng. Tuy nhiên các mã này hoàn toàn ngẫu nhiên nên không tạo được quan hệ giữa hai tập dữ liệu, ví dụ đơn hàng trỏ đúng vào khách hàng có thật.
Vì sao số điện thoại sinh ra có cái bắt đầu bằng 01 hoặc 02?
Vì công cụ chỉ ghép số không với một dãy chín chữ số ngẫu nhiên chứ không lọc theo đầu số di động thật. Đầu số di động Việt Nam hiện chỉ gồm các nhóm 03, 05, 07, 08 và 09. Nếu bạn dùng dữ liệu này để kiểm thử phần kiểm tra hợp lệ ở biểu mẫu, hãy sửa lại các số không hợp lệ trước.
Kiểu giá tiền có phần thập phân không?
Không, nó cho ra số nguyên trong khoảng từ không tới gần mười triệu, hợp với đơn vị đồng vốn không dùng phần lẻ trong thực tế. Nếu dự án của bạn tính theo đơn vị có phần lẻ như đô la, bạn cần tự chia lại hoặc thay bằng kiểu số rồi tự định dạng khi hiển thị.
Đường dẫn ảnh sinh ra có hiển thị được ảnh thật không?
Có, nó trỏ tới một dịch vụ ảnh mẫu công cộng với kích thước bốn trăm nhân ba trăm và một hạt giống ngẫu nhiên, nên mỗi bản ghi cho một ảnh khác nhau. Điều kiện là máy đang chạy phải có kết nối mạng. Nếu bạn cần bản trình bày chạy ngoại tuyến, hãy thay các đường dẫn này bằng ảnh cục bộ.
Ngày giờ sinh ra theo múi giờ nào?
Chuỗi ngày giờ theo chuẩn quốc tế kết thúc bằng chữ Z, tức là giờ phối hợp quốc tế chứ không phải giờ Việt Nam. Nếu giao diện của bạn hiển thị thẳng chuỗi này mà không chuyển múi giờ, giờ hiện lên sẽ sớm hơn thực tế bảy tiếng. Đây thật ra là một tình huống đáng kiểm thử vì lỗi múi giờ rất hay xảy ra trong dự án thật.
Kết quả có tải về được thành tệp không?
Chưa có nút tải tệp, chỉ có nút sao chép vào bộ nhớ tạm. Cách làm nhanh là bấm sao chép rồi tạo một tệp mới trong trình soạn thảo, dán vào và lưu với phần mở rộng json. Với các dự án dùng máy chủ giả lập, đây cũng đúng là bước bạn phải làm nên không mất thêm thao tác nào.
Dữ liệu tôi khai báo có bị gửi lên máy chủ không?
Không. Cả việc dựng schema lẫn việc sinh giá trị ngẫu nhiên đều chạy bằng JavaScript trong trình duyệt, không có bước gửi dữ liệu đi. Dù vậy đây là dữ liệu giả nên rủi ro vốn đã thấp, cái cần cẩn thận hơn là đừng gõ tên trường chứa thông tin nhạy cảm về cấu trúc hệ thống nội bộ vào bất kỳ trang nào.
Có nên nạp dữ liệu này vào cơ sở dữ liệu thật không?
Chỉ nên nạp vào cơ sở dữ liệu của môi trường phát triển hoặc thử nghiệm, và nên thêm một trường đánh dấu để về sau xóa sạch bằng một câu lệnh. Tuyệt đối tránh trộn với dữ liệu thật, vì các địa chỉ thư điện tử mẫu sẽ dội ngược hàng loạt nếu lọt vào hệ thống gửi thư và làm giảm uy tín tên miền gửi của bạn.
Từ khóa liên quan
- tạo mock data json
- api mock generator
- dữ liệu giả lập cho api
- fake data json online
- mock api cho frontend
- tạo json mẫu
- json server mock
- dữ liệu mẫu tiếng việt
- sinh dữ liệu test
- faker js thay thế
- test data generator
- uuid v4 là gì
- định dạng ngày iso 8601
- mock data cho unit test
- dựng giao diện khi chưa có api
- json mảng đối tượng
- dữ liệu demo cho khách hàng
- seed database dữ liệu mẫu
- công cụ developer miễn phí
- tạo dữ liệu json ngẫu nhiên
