Ģenerēt viltus JSON datu kopu

ģenerē N JSON ierakstus, kas atbilst vienkāršai shēmai, no Faker (locale fr_FR vai en_US)

Kam tiek izmantoti fiktīvie dati?

Nepieciešamība rodas visos attīstības cikla posmos. Demonstrācijai mums ir nepieciešami lietotāji ticams, nav saīsināts Lorem Ipsum. Integrācijas testiem mēs vēlamies datu kopu reproducējams, bet daudzveidīgs. Pirmsražošanas vidē, kas izolēta no GDPR, mēs aizstājam datus reāli ar mākslīgiem ekvivalentiem. UI modelim tabulas ir jāaizpilda ar ierakstiem ticams. fiktīvo datu ģenerators aptver šos gadījumus, producējot JSON ieraksti, kas atbilst vienkāršai shēmai.

Diagrammas formāts

Shēma ir JSON objekts, kur katra atslēga ir izveidotā lauka nosaukums un vērtība ir Faker tips. Autors piemērs:

{
  "nosaukums": "vārds",
  "email": "e-pasts",
  "vecums": "numurs 18-65",
  "aktīvs": "būla",
  "registered_on": "datums"
}

Pēc tam rīks ģenerē N ierakstus, ievērojot šo shēmu, izvēlētajā lokalizācijā (franču vai angļu valodā). Rezultāts ir JSON masīvs, ko var izmantot tieši kā fiksatoru kā pieprasījuma pamattekstu API vai kā ievadi datu bāzes sējējam.

Atbalstītie veidi

  • vārds: pilns vārds (“Marie Dupont”).
  • firstName / lastName: vārds un uzvārds ir atdalīti.
  • e-pasts: viltota e-pasta adrese (izmanto safeEmail no Faker, kas ražo rezervētie domēni example.com nav sasniedzami).
  • tālrunis: lokāli formatēts tālruņa numurs.
  • adrese: pilna pasta adrese.
  • skaitlis: nejaušs vesels skaitlis no 0 līdz 1000 pēc noklusējuma vai skaitlis a-b personalizētu klāstu.
  • būla: true vai false nejauši.
  • datums: datums ISO 8601 formātā (GGGG-MM-DD).
  • uuid: UUID v4.
  • teksts: īsa, īsa rindkopa (apmēram 120 rakstzīmes).
  • virkne: trīs nejauši izvēlēti vārdi.
  • url: fiktīvs URL (https://example.org/...).

Visi neatpazītie veidi tiek saglabāti kā rezultātā. Tā ir izvēle: ja jūs ievietojat "role": "admin" shēmā katram ierakstam būs "role": "admin". Šis ļauj sajaukt nemainīgas vērtības un dinamiskos laukus, nemainot rīkus.

Vietas izvēle

Fakeram ir desmitiem telpu. Šis rīks kontekstā atklāj divus visnoderīgākos franciski runājoši:

  • fr_FR: vārdi franču valodā, adreses franču valodā, tālruņu numuri franču formātā, lorem-ipsum teikumi aptuvenā franču valodā.
  • en_US: amerikāņu vārdi un adreses, tālruņu numuri ASV formātā.

Lai demonstrētu konsekvenci franču valodā, izvēlieties fr_FR. Par pārbaudi internacionalizāciju, sajauciet abas izpildes vai palieliniet nepieciešamo ierakstu skaitu no dažādas izcelsmes.

Lietošanas gadījumi

  • Pārbaudes labojumi: ģenerējiet 50 lietotājus, ielīmējiet tos YAML failā no AliceBundle vai sējmašīnas. Reproducējams, iestatot Faker sēklu, citādi var mainīties.
  • Lietotāja saskarnes maketi: aizpildiet React/Vue tabulu ar ticamiem datiem. Daudz jēgpilnāk par tukšu masīvu vai foo / bar / baz.
  • Pārbaudes slodze: ģenerējiet lielu JSON lietderīgo slodzi caurlaidspējas pārbaudei (k6, JMeter, sisenis).
  • Komerciālās demonstrācijas: aizpildiet demonstrācijas gadījumu ar ievades datiem atgādina reālus gadījumus, taču neriskē nopludināt sensitīvu informāciju.
  • Anonimizācija: iepriekš aizstājiet produkcijas eksportu ar fiktīvu ekvivalentu kopīgojiet to ar apakšuzņēmēju vai izmantojiet to pirmsražošanā.

Brīvprātīgie ierobežojumi

Lai rīks būtu vienkārši lietojams, rīks neatbalsta ligzdotas shēmas (lauks, kas pats par sevi būtu objekts vai objektu masīvs). Šādām vajadzībām labāk ir uzrakstīt īpašu Faker skriptu vai sastādīt vairākus secīgus zvanus. Brīvprātīgais ierobežojums izvairās arī no absurdām kombinācijām ("preces": "nosaukums" ar nejaušu kardinālu), kas padarītu rīku mazāk paredzamu.

Ierakstu skaits ir ierobežots līdz 500. Turklāt mēs sagaidām tādu vidi pārbaudiet, vai tas ģenerē savus armatūru, izmantojot īpašu kodu (Faker in CLI, Foundry, factory_bot utt.). Tīmekļa rīks ir noderīga līdz dažiem simtiem ierakstu; ārpus tā, atmiņas un reakcijas laika plato pieredze.

Reproducējamība un drošība

Vērtības tiek veidotas ar nedeterministisku PRNG: katra izpilde rada datus dažādi. Testiem, kuriem ir jābūt reproducējamiem (CI), tveriet izvadi vienreiz un apņemies to. Lai iegūtu patiesi sensitīvus datus (ražošanas anonimizācija), ņemiet vērā, ka publiskā servera puses ģenerēšana nav īstais kanāls: dodiet priekšroku vietējam skriptam, kas nekad neiziet savu pozīciju.

Bieži uzdotie jautājumi

Vai ģenerētie e-pasta ziņojumi ir derīgi?

Formāts ir derīgs (RFC 5322), bet domēns ir example.com vai līdzvērtīgs rezervēts autors IANA. Neviens no šiem e-pastiem nevar saņemt ziņojumus; tas ir brīvprātīgi, lai izvairītos no surogātpasta nejauši uz īstām adresēm.

Vai es varu iegūt vienu un to pašu datu kopu vairākas reizes?

Ne izmantojot tīmekļa saskarni: rīks neiestata sēklu. Lai nodrošinātu stingru reproducējamību, skriptu vietējā paaudze ar Faker un fiksētu sēklu ($faker->seed(1234);).

Kā ģenerēt ligzdotu objektu?

Rīks atbalsta tikai plakanu diagrammu. Iegultai, pēcapstrādājiet izvadi ar skriptu vai tieši ierakstiet atbilstošo Faker kodu.

Kāpēc mani skaitļi ir no 0 līdz 1000?

Šis ir noklusējuma diapazons. Norādiet diapazonu: "vecums": "numurs 18-65", "price": "numurs 1-9999" utt.

Kādas ir saites uz citiem vietnes rīkiem?

Lai uzzinātu par UUID daudzumu, skatiet UUID ģeneratoru. Par paroles, paroļu ģenerators. Tekstam, teksta ģenerators. Izspēles datu ģenerators ir rīks šķērsvirziena, kas apvieno vairākas no šīm paaudzēm.

Pieprasījuma piemērs

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

Ievades shēma

Lauks Tips Obligāts Noklusējums
schema text {"name": "name", "email": "email", "age": "number 18-65"}
count integer 5
locale choice (fr_FR, en_US) fr_FR

Endpoint

  • GET https://cdrn.fr/api/v1/tools - uzskaita visus pieejamos rīkus
  • GET https://cdrn.fr/api/v1/tools/mock-data-generator - iegūst šī rīka shēmu
  • POST https://cdrn.fr/api/v1/tools/mock-data-generator/execute - izpilda šo rīku ar JSON payload