Generer et falsk JSON-datasæt

genererer N JSON-poster der svarer til et simpelt skema, fra Faker (locale fr_FR eller en_US)

Hvad bruges dummy-data til?

Behovet opstår på alle stadier af udviklingscyklussen. Til en demo har vi brug for brugere plausibel, ikke afkortet Lorem Ipsum. Til integrationstest ønsker vi et datasæt reproducerbar, men varieret. For et præproduktionsmiljø, der er isoleret fra GDPR, erstatter vi dataene reelle ved kunstige ækvivalenter. For en UI-model skal du udfylde tabeller med poster troværdig. dummy-datageneratoren dækker disse tilfælde ved at producere JSON-poster, der er i overensstemmelse med et simpelt skema.

Diagrammets format

Skemaet er et JSON-objekt, hvor hver nøgle er navnet på det producerede felt, og værdien er en Faker-type. Af eksempel:

{
  "navn": "navn",
  "email": "e-mail",
  "age": "nummer 18-65",
  "active": "boolesk",
  "registred_on": "dato"
}

Værktøjet genererer derefter N optagelser, der respekterer dette skema, i den valgte lokalitet (fransk eller engelsk). Resultatet er et JSON-array, der kan bruges direkte som et opspændingselement, som brødteksten i en anmodning API, eller som input til en database seeder.

Understøttede typer

  • navn: fulde navn ("Marie Dupont").
  • fornavn / efternavn: for- og efternavn adskilt.
  • e-mail: falsk e-mailadresse (bruger safeEmail fra Faker, som producerer reserverede domæner example.com kan ikke nås).
  • telefon: lokalt formateret telefonnummer.
  • adresse: fuld postadresse.
  • tal: tilfældigt heltal mellem 0 og 1000 som standard, eller tal a-b for et personligt udvalg.
  • boolesk: sand eller falsk tilfældigt.
  • dato: dato i ISO 8601-format (ÅÅÅÅ-MM-DD).
  • uuid: UUID v4.
  • tekst: kort lorem-ipsumesque afsnit (~120 tegn).
  • streng: tre tilfældige ord.
  • url: Dummy-URL (https://example.org/...).

Eventuelle ikke-genkendte typer opbevares som i resultatet. Det er et valg: hvis du sætter "role": "admin" i skemaet, vil hver post have "role": "admin". Dette giver dig mulighed for at blande konstante værdier og dynamiske felter uden at skifte værktøjer.

Valg af placering

Faker har snesevis af lokaler. Værktøjet afslører de to mest nyttige i sammenhæng Fransktalende:

  • fr_FR: Franske navne, franske adresser, telefonnumre i fransk format, lorem-ipsum sætninger på tilnærmet fransk.
  • da_US: Amerikanske navne og adresser, telefonnumre i amerikansk format.

For at få ensartet demonstration på den franske side, vælg fr_FR. Til en test internationalisering, blande de to henrettelser eller øge antallet af poster, der skal have fra forskellige oprindelser.

Brug cases

  • Testrettelser: generer 50 brugere, indsæt dem i en YAML-fil fra AliceBundle eller en såmaskine. Reproducerbar, når du sætter en Faker-seed, varieret ellers.
  • UI-mockups: udfyld en React/Vue-tabel med plausible data. En masse mere meningsfuldt end et tomt array eller foo / bar / baz.
  • Testbelastning: generer en stor JSON-nyttelast til en gennemløbstest (k6, JMeter, Græshoppe).
  • Kommercielle demoer: udfyld en demoforekomst med input, der ligner virkelige tilfælde, men risiker ikke at lække følsomme oplysninger.
  • Anonymisering: Erstat en produktionseksport med en dummy-ækvivalent før del det med en underleverandør eller brug det i præproduktion.

Frivillige grænser

For at forblive enkelt at bruge, understøtter værktøjet ikke indlejrede skemaer (et felt, som i sig selv ville være et objekt eller en række objekter). Til sådanne behov er det bedre at skrive et dedikeret Faker-manuskript eller ringe op til flere på hinanden følgende opkald. Den frivillige grænse undgår også absurde kombinationer ("items": "navn" med tilfældig kardinalitet), hvilket ville gøre værktøjet mindre forudsigeligt.

Antallet af poster er begrænset til 500. Ud over det forventer vi et miljø af test, at den genererer sine armaturer via dedikeret kode (Faker i CLI, Foundry, factory_bot osv.). Webværktøjet er nyttig for op til et par hundrede poster; ud over det, hukommelse og responstid plateau erfaring.

Reproducerbarhed og sikkerhed

Værdier produceres med en ikke-deterministisk PRNG: hver udførelse producerer data anderledes. For test, der skal være reproducerbare (CI), skal du fange output én gang og begå det. For virkelig følsomme data (produktionsanonymisering), skal du huske, at public server-side generation er ikke den rigtige kanal: foretrækker et lokalt script, der aldrig afsluttes din position.

Ofte stillede spørgsmål

Er de genererede e-mails gyldige?

Formatet er gyldigt (RFC 5322), men domænet er example.com eller tilsvarende reserveret af IANA. Ingen af disse e-mails kan modtage beskeder; dette er frivilligt for at undgå spam tilfældigt på rigtige adresser.

Kan jeg få det samme datasæt flere gange?

Ikke via webgrænsefladen: Værktøjet sætter ikke et frø. For streng reproducerbarhed, script til lokal generation med Faker og et fast frø ($faker->seed(1234);).

Hvordan genererer man et indlejret objekt?

Værktøjet understøtter kun et fladt diagram. For indlejret, efterbehandle outputtet med et script eller skriv direkte den tilsvarende Faker-kode.

Hvorfor er alle mine tal mellem 0 og 1000?

Dette er standardområdet. Angiv et interval: "age": "nummer 18-65", "price": "nummer 1-9999" osv.

Hvad er links til andre værktøjer på webstedet?

For antal UUID'er, se UUID-generatoren. For adgangskoder, adgangskodegeneratoren. Til tekst, tekstgeneratoren. Den falske datagenerator er værktøjet tværgående som kombinerer flere af disse generationer.

Anmodningseksempel

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

Inputskema

Felt Type Påkrævet Standard
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 - lister alle tilgængelige værktøjer
  • GET https://cdrn.fr/api/v1/tools/mock-data-generator - henter skemaet for dette værktøj
  • POST https://cdrn.fr/api/v1/tools/mock-data-generator/execute - udfører dette værktøj med et JSON-payload