Wygeneruj fałszywe dane JSON

wygeneruj N rekordów JSON pasujących do prostego schematu używając Faker (locale fr_FR lub en_US)

Do czego służą dane fikcyjne?

Potrzeba pojawia się na wszystkich etapach cyklu programistycznego. Dla demonstracji potrzeba prawdopodobnych użytkowników, a nie obciętego Lorem Ipsum. Dla testów integracyjnych chcemy reprodukowalnego, ale różnorodnego zestawu danych. Dla środowiska preprodukcyjnego odizolowanego od RODO zastępujemy rzeczywiste dane fikcyjnymi odpowiednikami. Dla makiety UI trzeba zapełnić tabele wiarygodnymi pozycjami. Generator danych fikcyjnych pokrywa te przypadki, produkując rekordy JSON zgodne z prostym schematem.

Format schematu

Schemat to obiekt JSON, w którym każdy klucz to nazwa produkowanego pola, a wartość to typ Faker. Na przykład:

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

Narzędzie następnie generuje N rekordów respektujących ten schemat, w wybranej locale (francuska lub angielska). Wynikiem jest tablica JSON użyteczna bezpośrednio jako fixture, jako treść żądania API lub jako wejście seedera bazy danych.

Obsługiwane typy

  • name: pełne imię i nazwisko („Marie Dupont").
  • firstName / lastName: imię i nazwisko oddzielnie.
  • email: fikcyjny adres mailowy (używa safeEmail z Faker, który produkuje zarezerwowane domeny example.com, niedostępne).
  • phone: numer telefonu sformatowany w locale.
  • address: kompletny adres pocztowy.
  • number: losowa liczba całkowita między 0 a 1000 domyślnie lub number a-b dla niestandardowego zakresu.
  • boolean: losowo true lub false.
  • date: data w formacie ISO 8601 (YYYY-MM-DD).
  • uuid: UUID v4.
  • text: krótki akapit lorem-ipsumowy (~120 znaków).
  • string: trzy losowe słowa.
  • url: fikcyjny URL (https://example.org/...).

Każdy nierozpoznany typ jest zachowywany w niezmienionej formie w wyniku. To wybór: jeśli umieścisz "role": "admin" w schemacie, każdy rekord będzie miał "role": "admin". Pozwala to mieszać stałe wartości i dynamiczne pola bez zmiany narzędzia.

Wybór locale

Faker dysponuje dziesiątkami locales. Narzędzie udostępnia dwie najbardziej przydatne w kontekście frankofońskim:

  • fr_FR: francuskie nazwiska, francuskie adresy, numery telefonów w formacie francuskim, zdania lorem-ipsum w przybliżonym francuskim.
  • en_US: nazwiska i adresy amerykańskie, numery telefonów w formacie US.

Dla spójności demonstracji po stronie francuskiej wybierz fr_FR. Dla testu internacjonalizacji wymieszaj dwa wykonania lub zwiększ liczbę rekordów, aby dysponować różnorodnością pochodzeń.

Przypadki użycia

  • Fixturey testów: wygenerowanie 50 użytkowników, wklejenie ich do pliku YAML AliceBundle lub seedera. Reprodukowalne, gdy ustali się seed Faker, w przeciwnym razie różnorodne.
  • Makiety UI: wypełnienie tabeli React/Vue prawdopodobnymi danymi. Znacznie bardziej wymowne niż pusta tabela lub foo / bar / baz.
  • Test obciążenia: wygenerowanie obszernego payloadu JSON do testu przepustowości (k6, JMeter, Locust).
  • Demonstracje handlowe: zaludnienie instancji demonstracyjnej pozycjami, które przypominają rzeczywiste przypadki, ale nie ryzykują wycieku wrażliwych informacji.
  • Anonimizacja: zastąpienie eksportu produkcji fikcyjnym odpowiednikiem przed udostępnieniem go podwykonawcy lub użyciem w preprodukcji.

Celowe ograniczenia

Aby pozostać prostym w użyciu, narzędzie nie obsługuje schematów zagnieżdżonych (pole, które byłoby samo obiektem lub tablicą obiektów). Dla takich potrzeb lepiej napisać dedykowany skrypt Faker lub skomponować kilka kolejnych wywołań. Celowe ograniczenie unika też absurdalnych kombinacji ("items": "name" z losową kardynalnością), które uczyniłyby narzędzie mniej przewidywalnym.

Liczba rekordów jest ograniczona do 500. Powyżej oczekujemy od środowiska testowego, że wygeneruje swoje fixtury przez dedykowany kod (Faker w CLI, Foundry, factory_bot itp.). Narzędzie webowe jest użyteczne do kilkuset rekordów, powyżej pamięć i czas odpowiedzi limitują doświadczenie.

Reprodukowalność i bezpieczeństwo

Wartości są produkowane z niedeterministycznym PRNG: każde wykonanie produkuje inne dane. Dla testów, które muszą być reprodukowalne (CI), uchwyć wyjście raz i zacommituj je. Dla danych naprawdę wrażliwych (anonimizacja produkcji) pamiętaj, że publiczna generacja po stronie serwera nie jest właściwym kanałem: preferuj lokalny skrypt, który nigdy nie opuszcza twojego stanowiska.

Najczęściej zadawane pytania

Czy wygenerowane emaile są prawidłowe?

Format jest prawidłowy (RFC 5322), ale domena to example.com lub równoważna zarezerwowana przez IANA. Żaden z tych emaili nie może otrzymać wiadomości, jest to celowe, aby uniknąć przypadkowego spamu na prawdziwe adresy.

Czy mogę otrzymać ten sam zestaw danych kilka razy?

Nie przez interfejs webowy: narzędzie nie ustala seeda. Dla ścisłej reprodukowalności skryptuj generację lokalnie z Faker i stałym seedem ($faker->seed(1234);).

Jak wygenerować zagnieżdżony obiekt?

Narzędzie obsługuje tylko płaski schemat. Dla zagnieżdżenia przetwarzaj wyjście skryptem lub napisz bezpośrednio odpowiedni kod Faker.

Dlaczego moje liczby są wszystkie między 0 a 1000?

To domyślny zakres. Określ zakres: "age": "number 18-65", "price": "number 1-9999" itp.

Jakie są związki z innymi narzędziami strony?

Dla UUID w ilości zobacz generator UUID. Dla haseł generator haseł. Dla tekstu generator tekstu. Mock data generator to narzędzie przekrojowe, które łączy kilka z tych generacji.

Przykładowe zapytanie

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

Schemat wejściowy

Pole Typ Wymagane Domyślnie
schema text {"name": "name", "email": "email", "age": "number 18-65"}
count integer 5
locale choice (fr_FR, en_US) fr_FR

Punkty końcowe

  • GET https://cdrn.fr/api/v1/tools - lista wszystkich dostępnych narzędzi
  • GET https://cdrn.fr/api/v1/tools/mock-data-generator - zwraca schemat dla tego narzędzia
  • POST https://cdrn.fr/api/v1/tools/mock-data-generator/execute - uruchamia to narzędzie z payloadem JSON