Generuoti netikrą JSON duomenų rinkinį

generuoja N JSON įrašų, atitinkančių paprastą schemą, iš Faker (locale fr_FR arba en_US)

Kam naudojami netikri duomenys?

Poreikis iškyla visuose vystymosi ciklo etapuose. Demonstracijai mums reikia vartotojų tikėtinas, nesutrumpintas Lorem Ipsum. Integracijos bandymams norime duomenų rinkinio atkuriamas, bet įvairus. Priešgamybinėje aplinkoje, atskirtoje nuo BDAR, pakeičiame duomenis realus dirbtiniais atitikmenimis. Jei naudojate vartotojo sąsajos modelį, lenteles turite užpildyti įrašais patikimas. Netikrų duomenų generatorius apima šiuos atvejus gamindamas JSON įrašai, atitinkantys paprastą schemą.

Diagramos formatas

Schema yra JSON objektas, kuriame kiekvienas raktas yra sukurto lauko pavadinimas, o vertė yra „Faker“ tipas. Autorius pavyzdys:

{
  "vardas": "vardas",
  "email": "email",
  "amžius": "18-65 skaičius",
  "aktyvus": "loginis",
  "registred_on": "data"
}

Tada įrankis sugeneruoja N įrašų pagal šią schemą pasirinktoje vietovėje (prancūzų arba anglų kalba). Rezultatas yra JSON masyvas, kurį galima naudoti tiesiogiai kaip įtaisą, kaip užklausos turinį API arba kaip įvestį į duomenų bazės sėjamąją.

Palaikomi tipai

  • vardas: visas vardas („Marie Dupont“).
  • vardas / pavardė: vardas ir pavardė atskirti.
  • el. paštas: netikras el. pašto adresas (naudoja safeEmail iš Faker, kuris gamina rezervuoti domenai example.com nepasiekiami).
  • telefonas: vietinio formato telefono numeris.
  • adresas: visas pašto adresas.
  • skaičius: pagal numatytuosius nustatymus atsitiktinis sveikasis skaičius nuo 0 iki 1000 arba skaičiai a-b asmeninį asortimentą.
  • bulio reikšmė: tiesa arba false atsitiktinė.
  • data: data ISO 8601 formatu (YYYY-MM-DD).
  • uuid: UUID v4.
  • tekstas: trumpa pastraipa (apie 120 simbolių).
  • eilutė: trys atsitiktiniai žodžiai.
  • url: netikras URL (https://example.org/...).

Visi neatpažinti tipai paliekami tokie, kokie yra rezultate. Tai pasirinkimas: jei įdėsite "role": "admin" schemoje kiekvienas įrašas turės "role": "admin". Tai leidžia maišyti pastovias reikšmes ir dinaminius laukus nekeičiant įrankių.

Vietos pasirinkimas

Faker turi dešimtis patalpų. Įrankis kontekste atskleidžia du naudingiausius prancūziškai kalbantys:

  • fr_FR: prancūziški vardai, adresai, telefonų numeriai prancūzišku formatu, lorem-ipsum sakiniai apytiksliai prancūzų kalba.
  • en_US: Amerikos vardai ir adresai, telefonų numeriai JAV formatu.

Kad demonstravimas būtų nuoseklus prancūzų pusėje, pasirinkite fr_FR. Dėl testo internacionalizavimą, sumaišykite dvi egzekucijas arba padidinkite turimų įrašų skaičių iš įvairios kilmės.

Naudojimo atvejai

  • Bandomieji pataisymai: sugeneruokite 50 naudotojų, įklijuokite juos į YAML failą iš AliceBundle arba sėjamosios. Atkuriamas, kai nustatote „Faker“ sėklą, kitaip skiriasi.
  • NS maketai: užpildykite „React“ / „Vue“ lentelę patikimais duomenimis. Daug prasmingesnis nei tuščias masyvas arba foo / bar / baz.
  • Bandomoji apkrova: generuokite didelę JSON naudingąją apkrovą pralaidumo testui (k6, JMeter, Skėriai).
  • Komercinės demonstracinės versijos: užpildykite demonstracinį egzempliorių naudodami įvestis primena tikrus atvejus, bet nerizikuoja nutekėti neskelbtinos informacijos.
  • Anonimiškumas: pakeiskite produkcijos eksportą netikru ekvivalentu pasidalykite juo su subrangovu arba naudokite paruošiamojoje gamyboje.

Savanoriškos ribos

Kad būtų paprasta naudoti, įrankis nepalaiko įdėtųjų schemų (lauko, kuris pats būtų objektas arba objektų masyvas). Tokiems poreikiams geriau parašyti tam skirtą Faker scenarijų arba skambinti kelis skambučius iš eilės. Savanoriška riba taip pat leidžia išvengti absurdiškų derinių ("elementai": "pavadinimas" su atsitiktiniu kardinalumu), todėl įrankis būtų mažiau nuspėjamas.

Įrašų skaičius ribojamas iki 500. Be to, tikimės aplinkos patikrinkite, ar jis sugeneruoja savo įrenginius naudodamas tam skirtą kodą (Faker in CLI, Foundry, factory_bot ir kt.). Žiniatinklio įrankis naudingas iki kelių šimtų įrašų; be to, atminties ir reakcijos laiko plynaukštė patirtį.

Atkuriamumas ir saugumas

Reikšmės sukuriamos naudojant nedeterministinį PRNG: kiekvienas vykdymas sukuria duomenis skirtinga. Jei bandymai turi būti atkuriami (CI), vieną kartą užfiksuokite išvestį ir įsipareigoti. Jei norite gauti tikrai neskelbtinų duomenų (gamybos anonimiškumas), atminkite, kad viešojo serverio pusės generavimas nėra tinkamas kanalas: pirmenybę teikite vietiniam scenarijui, kuris niekada neišeina savo poziciją.

Dažnai užduodami klausimai

Ar sugeneruoti el. laiškai galioja?

Formatas yra tinkamas (RFC 5322), bet domenas yra example.com arba lygiavertis rezervuotas pateikė IANA. Nė vienas iš šių el. laiškų negali gauti pranešimų; tai savanoriška, kad būtų išvengta šiukšlių atsitiktiniai tikruose adresuose.

Ar galiu gauti tą patį duomenų rinkinį kelis kartus?

Ne per žiniatinklio sąsają: įrankis nenustato sėklos. Kad būtų užtikrintas griežtas atkuriamumas, parašykite scenarijų vietinė karta su Faker ir fiksuota sėkla ($faker->seed(1234);).

Kaip sugeneruoti įdėtą objektą?

Įrankis palaiko tik plokščią diagramą. Jei naudojate įterptą, apdorokite išvestį scenariju arba tiesiogiai parašykite atitinkamą Faker kodą.

Kodėl mano skaičiai yra nuo 0 iki 1000?

Tai numatytasis diapazonas. Nurodykite diapazoną: "amžius": "numeris 18–65", "kaina": "numeris 1-9999" ir kt.

Kokios nuorodos į kitus įrankius svetainėje?

Norėdami sužinoti UUID skaičių, žr. UUID generatorių. Už slaptažodžius, slaptažodžių generatorių. Dėl teksto, teksto generatorius. Apgaulingų duomenų generatorius yra įrankis skersinis, jungiantis kelias iš šių kartų.

Užklausos pavyzdys

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

Įvesties schema

Laukas Tipas Privalomas Numatytasis
schema text {"name": "name", "email": "email", "age": "number 18-65"}
count integer 5
locale choice (fr_FR, en_US) fr_FR

Galiniai taškai

  • GET https://cdrn.fr/api/v1/tools - išvardija visus galimus įrankius
  • GET https://cdrn.fr/api/v1/tools/mock-data-generator - gauna šio įrankio schemą
  • POST https://cdrn.fr/api/v1/tools/mock-data-generator/execute - vykdo šį įrankį su JSON payload