Nep JSON-data genereren

genereer N JSON-records die overeenkomen met een eenvoudig schema met behulp van Faker (locale fr_FR of en_US)

Waarvoor dienen mock-gegevens?

De behoefte komt terug in alle fasen van de ontwikkelingscyclus. Voor een demo heeft men plausibele gebruikers nodig, geen afgekapte Lorem Ipsum. Voor integratietests wil men een reproduceerbare maar gevarieerde dataset. Voor een pre-productieomgeving geïsoleerd van AVG vervangt men de echte gegevens door mock-equivalenten. Voor een UI-mockup moet men tabellen vullen met geloofwaardige entries. De mock data generator dekt deze gevallen door JSON-records te produceren die voldoen aan een eenvoudig schema.

Het schema-formaat

Het schema is een JSON-object waarbij elke sleutel de naam is van het geproduceerde veld en de waarde een Faker-type is. Bijvoorbeeld:

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

De tool genereert vervolgens N records die voldoen aan dit schema, in de gekozen locale (Frans of Engels). Het resultaat is een JSON-array die direct bruikbaar is als fixture, als body van een API-aanvraag, of als input van een database-seeder.

Ondersteunde typen

  • name: volledige naam ("Marie Dupont").
  • firstName / lastName: voornaam en achternaam afzonderlijk.
  • email: mock e-mailadres (gebruikt safeEmail van Faker, dat gereserveerde example.com-domeinen produceert die niet bereikbaar zijn).
  • phone: telefoonnummer opgemaakt naar de locale.
  • address: volledig postadres.
  • number: willekeurig geheel getal tussen 0 en 1000 standaard, of number a-b voor een aangepast bereik.
  • boolean: true of false willekeurig.
  • date: datum in ISO 8601-formaat (YYYY-MM-DD).
  • uuid: UUID v4.
  • text: korte lorem-ipsumeske paragraaf (~120 tekens).
  • string: drie willekeurige woorden.
  • url: mock-URL (https://example.org/...).

Elk niet-herkend type wordt zo bewaard in het resultaat. Het is een keuze: als u "role": "admin" in het schema plaatst, heeft elke record "role": "admin". Dat maakt het mogelijk om constante waarden en dynamische velden te mengen zonder van tool te wisselen.

Keuze van de locale

Faker beschikt over tientallen locales. De tool stelt de twee meest nuttige bloot in een Franstalige context:

  • fr_FR: Franse namen, Franse adressen, telefoonnummers in Frans formaat, lorem-ipsum-zinnen in benaderend Frans.
  • en_US: Amerikaanse namen en adressen, telefoonnummers in US-formaat.

Voor demonstratieconsistentie aan Franstalige kant, kies fr_FR. Voor een internationalisatietest, meng beide uitvoeringen of verhoog het aantal records om een verscheidenheid aan oorsprongen te hebben.

Gebruiksgevallen

  • Testfixtures: 50 gebruikers genereren, deze plakken in een YAML-bestand van AliceBundle of een seeder. Reproduceerbaar wanneer men een Faker-seed vastlegt, anders gevarieerd.
  • UI-mockups: een React/Vue-tabel vullen met plausibele gegevens. Veel sprekender dan een lege tabel of dan foo / bar / baz.
  • Load testing: een omvangrijke JSON-payload genereren voor een doorvoertest (k6, JMeter, Locust).
  • Commerciële demo's: een demo-instantie vullen met entries die op echte gevallen lijken maar geen risico lopen om gevoelige informatie te lekken.
  • Anonimisering: een productie-export vervangen door een mock-equivalent voor het delen met een onderaannemer of het gebruik in pre-productie.

Bewuste beperkingen

Om eenvoudig te blijven om te gebruiken, ondersteunt de tool geen geneste schema's (een veld dat zelf een object of een array van objecten zou zijn). Voor dergelijke behoeften kunt u beter een speciaal Faker-script schrijven, of meerdere opeenvolgende oproepen samenstellen. De bewuste limiet vermijdt ook absurde combinaties ("items": "name" met een willekeurige cardinaliteit) die de tool minder voorspelbaar zouden maken.

Het aantal records is beperkt tot 500. Daarboven verwacht men van een testomgeving dat deze zijn fixtures genereert via toegewijde code (Faker in CLI, Foundry, factory_bot, enz.). De webtool is nuttig tot enkele honderden records; daarboven plafonneren het geheugen en de responstijd de ervaring.

Reproduceerbaarheid en beveiliging

De waarden worden geproduceerd met een niet-deterministische PRNG: elke uitvoering produceert verschillende gegevens. Voor tests die reproduceerbaar moeten zijn (CI), leg de uitvoer eenmaal vast en commit deze. Voor werkelijk gevoelige gegevens (productie-anonimisering), houd in gedachten dat generatie aan publieke serverkant niet het juiste kanaal is: verkies een lokaal script dat nooit uw werkstation verlaat.

Veelgestelde vragen

Zijn de gegenereerde e-mails geldig?

Het formaat is geldig (RFC 5322), maar het domein is example.com of een equivalent gereserveerd door IANA. Geen van deze e-mails kan berichten ontvangen; dat is bewust om accidentele spam op echte adressen te voorkomen.

Kan ik dezelfde dataset meerdere keren krijgen?

Niet via de webinterface: de tool legt geen seed vast. Voor strikte reproduceerbaarheid, scripteer de generatie lokaal met Faker en een vaste seed ($faker->seed(1234);).

Hoe genereer ik een genest object?

De tool ondersteunt alleen een plat schema. Voor nesting, post-process de uitvoer met een script of schrijf direct de overeenkomstige Faker-code.

Waarom liggen mijn getallen allemaal tussen 0 en 1000?

Dat is het standaardbereik. Specificeer een bereik: "age": "number 18-65", "price": "number 1-9999", enz.

Wat zijn de verbanden met andere tools van de site?

Voor UUID's in grote aantallen, zie de UUID-generator. Voor wachtwoorden, de wachtwoordgenerator. Voor tekst, de tekstgenerator. De mock data generator is de transversale tool die meerdere van deze generaties combineert.

Voorbeeldverzoek

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"}'

Invoerschema

Veld Type Vereist Standaard
schema text {"name": "name", "email": "email", "age": "number 18-65"}
count integer 5
locale choice (fr_FR, en_US) fr_FR

Endpoints

  • GET https://cdrn.fr/api/v1/tools - toont alle beschikbare tools
  • GET https://cdrn.fr/api/v1/tools/mock-data-generator - geeft het schema van deze tool terug
  • POST https://cdrn.fr/api/v1/tools/mock-data-generator/execute - voert deze tool uit met een JSON-payload