Generera falskt JSON-data

generera N JSON-poster som matchar ett enkelt schema med Faker (fr_FR eller en_US lokal)

Vad används mockdata till?

Behovet återkommer i alla skeden av utvecklingscykeln. För en demo behövs trovärdiga användare, inte avhuggen Lorem Ipsum. För integrationstester vill man ha ett reproducerbart men varierat dataset. För en preproduktionsmiljö isolerad från GDPR ersätter man verkliga data med fiktiva motsvarigheter. För en UI-mockup måste man fylla tabeller med trovärdiga poster. Mockdatageneratorn täcker dessa fall genom att producera JSON-poster som följer ett enkelt schema.

Schemats format

Schemat är ett JSON-objekt där varje nyckel är namnet på det fält som produceras och värdet är en Faker-typ. Till exempel:

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

Verktyget genererar sedan N poster som följer schemat, i vald locale (franska eller engelska). Resultatet är en JSON-array som kan användas direkt som fixtur, som body i en API- förfrågan eller som indata till en databas-seeder.

Typer som stöds

  • name: fullständigt namn ("Marie Dupont").
  • firstName / lastName: förnamn och efternamn separerade.
  • email: fiktiv e-postadress (använder safeEmail från Faker, som producerar reserverade domäner example.com som inte kan nås).
  • phone: telefonnummer formaterat enligt locale.
  • address: fullständig postadress.
  • number: slumpmässigt heltal mellan 0 och 1000 som standard, eller number a-b för ett anpassat intervall.
  • boolean: slumpmässigt true eller false.
  • date: datum i ISO 8601-format (YYYY-MM-DD).
  • uuid: UUID v4.
  • text: kort lorem-ipsum-aktigt stycke (~120 tecken).
  • string: tre slumpmässiga ord.
  • url: fiktiv URL (https://example.org/...).

Varje typ som inte känns igen behålls som den är i resultatet. Det är ett val: om du sätter "role": "admin" i schemat kommer varje post att ha "role": "admin". Det gör det möjligt att blanda konstanta värden och dynamiska fält utan att byta verktyg.

Val av locale

Faker har dussintals locales. Verktyget exponerar de två mest användbara i ett fransktalande sammanhang:

  • fr_FR: franska namn, franska adresser, telefonnummer i franskt format, lorem-ipsum-meningar på ungefärlig franska.
  • en_US: amerikanska namn och adresser, telefonnummer i US-format.

För konsekvens i en franskspråkig demo, välj fr_FR. För ett internationaliseringstest, blanda de två exekveringarna eller öka antalet poster för att ha en variation av ursprung.

Användningsfall

  • Testfixturer: generera 50 användare, klistra in dem i en YAML-fil i AliceBundle eller en seeder. Reproducerbart när man fixerar ett Faker-seed, varierat annars.
  • UI-mockups: fylla en React/Vue-tabell med trovärdiga data. Mycket mer talande än en tom tabell eller foo / bar / baz.
  • Lasttest: generera en stor JSON-payload för ett genomströmningstest (k6, JMeter, Locust).
  • Kommersiella demos: fylla en demonstrationsinstans med poster som liknar verkliga fall men inte riskerar att läcka känslig information.
  • Anonymisering: ersätta en produktionsexport med en fiktiv motsvarighet innan du delar den med en underleverantör eller använder den i preproduktion.

Medvetna begränsningar

För att förbli enkelt att använda stöder verktyget inte kapslade scheman (ett fält som självt skulle vara ett objekt eller en array av objekt). För sådana behov är det bättre att skriva ett dedikerat Faker-skript, eller komponera flera efterföljande anrop. Den medvetna begränsningen undviker också absurda kombinationer ("items": "name" med slumpmässig kardinalitet) som skulle göra verktyget mindre förutsägbart.

Antalet poster är begränsat till 500. Bortom det förväntas en testmiljö generera sina fixturer via dedikerad kod (Faker i CLI, Foundry, factory_bot osv.). Webbverktyget är användbart upp till några hundra poster; bortom det når minne och svarstid taket för upplevelsen.

Reproducerbarhet och säkerhet

Värdena produceras med en icke-deterministisk PRNG: varje körning producerar olika data. För tester som måste vara reproducerbara (CI), fånga utdatan en gång och committa den. För verkligt känsliga data (anonymisering av produktion), kom ihåg att generering på en offentlig server inte är rätt kanal: föredra ett lokalt skript som aldrig lämnar din arbetsstation.

Vanliga frågor

Är de genererade e-postadresserna giltiga?

Formatet är giltigt (RFC 5322), men domänen är example.com eller motsvarande reserverad av IANA. Ingen av dessa e-postadresser kan ta emot meddelanden; det är medvetet för att undvika oavsiktlig spam på riktiga adresser.

Kan jag få samma dataset flera gånger?

Inte via webbgränssnittet: verktyget fixerar inget seed. För strikt reproducerbarhet, skripta genereringen lokalt med Faker och ett fast seed ($faker->seed(1234);).

Hur genererar man ett kapslat objekt?

Verktyget stöder bara ett platt schema. För kapsling, efterbearbeta utdatan med ett skript eller skriv direkt motsvarande Faker-kod.

Varför är alla mina tal mellan 0 och 1000?

Det är standardintervallet. Ange ett intervall: "age": "number 18-65", "price": "number 1-9999" osv.

Vilka är kopplingarna till andra verktyg på sajten?

För UUID i mängd, se UUID-generatorn. För lösenord, lösenordsgeneratorn. För text, textgeneratorn. Mockdatageneratorn är det övergripande verktyget som kombinerar flera av dessa genereringar.

Exempelförfrågan

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

Indatasschema

Fält Typ Obligatorisk Standard
schema text {"name": "name", "email": "email", "age": "number 18-65"}
count integer 5
locale choice (fr_FR, en_US) fr_FR

Slutpunkter

  • GET https://cdrn.fr/api/v1/tools - listar alla tillgängliga verktyg
  • GET https://cdrn.fr/api/v1/tools/mock-data-generator - hämtar schemat för detta verktyg
  • POST https://cdrn.fr/api/v1/tools/mock-data-generator/execute - kör detta verktyg med en JSON-payload