Generarea unui set de date JSON fictiv

generează N înregistrări JSON corespunzând unei scheme simple, din Faker (locale fr_FR sau en_US)

La ce servesc datele fictive?

Nevoia revine la toate etapele ciclului de dezvoltare. Pentru o demo, este nevoie de utilizatori plauzibili, nu de Lorem Ipsum trunchiat. Pentru teste de integrare, se vrea un set de date reproductibil dar variat. Pentru un mediu de pre-producție izolat de GDPR, se înlocuiesc datele reale cu echivalente fictive. Pentru o machetă UI, trebuie populate tabele cu intrări credibile. Generatorul de date fictive acoperă aceste cazuri producând înregistrări JSON conforme unei scheme simple.

Formatul schemei

Schema este un obiect JSON unde fiecare cheie este numele câmpului produs și valoarea este un tip Faker. De exemplu:

{
  "name": "name",
  "email": "email",
  "age": "number 18-65",
  "active": "boolean",
  "registered_on": "date"
}

Instrumentul generează apoi N înregistrări respectând această schemă, în locale-ul ales (franceză sau engleză). Rezultatul este un tablou JSON utilizabil direct ca fixture, ca corp al unei cereri de API, sau ca input al unui seeder de bază de date.

Tipuri suportate

  • name: nume complet ("Marie Dupont").
  • firstName / lastName: prenume și nume separat.
  • email: adresă mail fictivă (utilizează safeEmail din Faker, care produce domenii rezervate example.com neaccesibile).
  • phone: număr de telefon formatat la locale.
  • address: adresă poștală completă.
  • number: întreg aleatoriu între 0 și 1000 implicit, sau number a-b pentru un interval personalizat.
  • boolean: true sau false aleatoriu.
  • date: dată în format ISO 8601 (YYYY-MM-DD).
  • uuid: UUID v4.
  • text: paragraf scurt lorem-ipsumesc (~120 caractere).
  • string: trei cuvinte aleatorii.
  • url: URL fictiv (https://example.org/...).

Orice tip nerecunoscut este păstrat ca atare în rezultat. Este o alegere: dacă pui "role": "admin" în schemă, fiecare înregistrare va avea "role": "admin". Aceasta permite amestecarea valorilor constante și a câmpurilor dinamice fără a schimba instrumentul.

Alegerea locale-ului

Faker dispune de zeci de locale-uri. Instrumentul expune cele două mai utile într-un context francofon:

  • fr_FR: nume franceze, adrese franceze, numere de telefon format francez, fraze lorem-ipsum în franceză aproximativă.
  • en_US: nume și adrese americane, numere de telefon format US.

Pentru o coerență de demonstrație pe partea franceză, alege fr_FR. Pentru un test de internaționalizare, amestecă cele două execuții sau crește numărul de records pentru a dispune de o varietate de origini.

Cazuri de utilizare

  • Fixture-uri de teste: a genera 50 utilizatori, a-i lipi într-un fișier YAML AliceBundle sau un seeder. Reproductibil când se fixează un seed Faker, variat altfel.
  • Machete UI: a umple un tabel React/Vue cu date plauzibile. Mult mai grăitor decât un tabel gol sau decât foo / bar / baz.
  • Sarcină de test: a genera un payload JSON voluminos pentru un test de debit (k6, JMeter, Locust).
  • Demo-uri comerciale: a popula o instanță de demonstrație cu intrări care seamănă unor cazuri reale dar nu riscă să scurgă informații sensibile.
  • Anonimizare: a înlocui un export de producție cu un echivalent fictiv înainte de a-l partaja cu un subcontractant sau a-l utiliza în pre-producție.

Limite voite

Pentru a rămâne simplu de utilizat, instrumentul nu suportă schemele imbricate (un câmp care ar fi el însuși un obiect sau un tablou de obiecte). Pentru asemenea nevoi, este mai bine să scrii un script Faker dedicat, sau să compui mai multe apeluri succesive. Limita voită evită de asemenea combinații absurde ("items": "name" cu o cardinalitate aleatorie) care ar face instrumentul mai puțin previzibil.

Numărul de înregistrări este plafonat la 500. Dincolo, se așteaptă de la un mediu de test să-și genereze fixture-urile prin cod dedicat (Faker în CLI, Foundry, factory_bot, etc.). Instrumentul web este util până la câteva sute de records; dincolo, memoria și timpul de răspuns plafonează experiența.

Reproductibilitate și securitate

Valorile sunt produse cu un PRNG nedeterminist: fiecare execuție produce date diferite. Pentru teste care trebuie să fie reproductibile (CI), capturează ieșirea o dată și commit-o. Pentru date cu adevărat sensibile (anonimizare de producție), păstrează în minte că generarea pe partea serverului public nu este canalul potrivit: preferă un script local care nu părăsește niciodată postul tău.

Întrebări frecvente

Sunt email-urile generate valide?

Formatul este valid (RFC 5322), dar domeniul este example.com sau echivalent rezervat de IANA. Niciunul dintre aceste email-uri nu poate primi mesaje; este voit pentru a evita spam-ul accidental pe adrese reale.

Pot obține același set de date de mai multe ori?

Nu prin interfața web: instrumentul nu fixează un seed. Pentru o reproductibilitate strictă, scriptează generarea local cu Faker și un seed fix ($faker->seed(1234);).

Cum să generez un obiect imbricat?

Instrumentul suportă doar o schemă plată. Pentru imbricat, post-tratează ieșirea cu un script sau scrie direct codul Faker corespunzător.

De ce numerele mele sunt toate între 0 și 1000?

Este intervalul implicit. Precizează un interval: "age": "number 18-65", "price": "number 1-9999", etc.

Care sunt legăturile cu alte instrumente ale site-ului?

Pentru UUID-uri în cantitate, vezi generatorul de UUID. Pentru parole, generatorul de parole. Pentru text, generatorul de text. Mock data generator-ul este instrumentul transversal care combină mai multe dintre aceste generări.

Exemplu de cerere

curl -X POST https://cdrn.fr/api/v1/tools/mock-data-generator/execute \
  -H "Content-Type: application/json" \
  -d '{"schema":"{\"name\": \"name\", \"email\": \"email\", \"age\": \"number 18-65\"}","count":5,"locale":"fr_FR"}'

Schema de intrare

Câmp Tip Obligatoriu Implicit
schema text {"name": "name", "email": "email", "age": "number 18-65"}
count integer 5
locale choice (fr_FR, en_US) fr_FR

Puncte de acces

  • GET https://cdrn.fr/api/v1/tools - listează toate instrumentele disponibile
  • GET https://cdrn.fr/api/v1/tools/mock-data-generator - obține schema acestui instrument
  • POST https://cdrn.fr/api/v1/tools/mock-data-generator/execute - execută acest instrument cu un payload JSON