Generare un set di dati JSON fittizio
- Dashboard
- Documentazione
- API
A cosa servono i dati fittizi?
Il bisogno torna in tutte le fasi del ciclo di sviluppo. Per una demo, servono utenti plausibili, non un Lorem Ipsum tronco. Per test di integrazione, si vuole un set di dati riproducibile ma vario. Per un ambiente di pre-produzione isolato dal GDPR, si sostituiscono i dati reali con equivalenti fittizi. Per un mockup UI, bisogna popolare tabelle con voci credibili. Il generatore di dati fittizi copre questi casi producendo record JSON conformi a uno schema semplice.
Il formato dello schema
Lo schema è un oggetto JSON dove ogni chiave è il nome del campo prodotto e il valore è un tipo Faker. Per esempio:
{
"name": "name",
"email": "email",
"age": "number 18-65",
"active": "boolean",
"registered_on": "date"
}
Lo strumento genera poi N record che rispettano questo schema, nella locale scelta (italiano o inglese). Il risultato è un array JSON utilizzabile direttamente come fixture, come corpo di una richiesta di API, o come input di un seeder di database.
Tipi supportati
- name: nome completo («Mario Rossi»).
- firstName / lastName: nome e cognome separati.
- email: indirizzo email fittizio (usa
safeEmaildi Faker, che produce domini riservatiexample.comnon raggiungibili). - phone: numero di telefono formattato secondo la locale.
- address: indirizzo postale completo.
- number: intero casuale tra 0 e 1000 per default, o
number a-bper un intervallo personalizzato. - boolean:
trueofalsecasuale. - date: data nel formato ISO 8601 (
YYYY-MM-DD). - uuid: UUID v4.
- text: breve paragrafo stile lorem-ipsum (~120 caratteri).
- string: tre parole casuali.
- url: URL fittizio (
https://example.org/...).
Ogni tipo non riconosciuto viene conservato così com'è nel risultato. È una scelta: se mettete
"role": "admin" nello schema, ogni record avrà "role": "admin". Questo
permette di mescolare valori costanti e campi dinamici senza cambiare strumento.
Scelta della locale
Faker dispone di decine di locali. Lo strumento espone le due più utili in un contesto italofono:
- it_IT: nomi italiani, indirizzi italiani, numeri di telefono formato italiano, frasi lorem-ipsum in italiano approssimativo.
- en_US: nomi e indirizzi americani, numeri di telefono formato US.
Per una coerenza di dimostrazione italiana, scegliete it_IT. Per un test
di internazionalizzazione, mescolate le due esecuzioni o aumentate il numero di record per disporre
di una varietà di origini.
Casi d'uso
- Fixture di test: generare 50 utenti, incollarli in un file YAML di AliceBundle o un seeder. Riproducibile fissando un seed Faker, vario altrimenti.
- Mockup UI: riempire una tabella React/Vue con dati plausibili. Molto
più parlante di una tabella vuota o di
foo / bar / baz. - Carico di test: generare un payload JSON voluminoso per un test di throughput (k6, JMeter, Locust).
- Demo commerciali: popolare un'istanza di dimostrazione con voci che assomigliano a casi reali ma non rischiano di far trapelare informazioni sensibili.
- Anonimizzazione: sostituire un export di produzione con un equivalente fittizio prima di condividerlo con un subappaltatore o usarlo in pre-produzione.
Limiti volontari
Per restare semplice da usare, lo strumento non supporta schemi nidificati (un campo che sia esso stesso
un oggetto o un array di oggetti). Per tali esigenze, è meglio scrivere uno script Faker dedicato, o
comporre più chiamate successive. Il limite volontario evita anche combinazioni assurde
("items": "name" con una cardinalità casuale) che renderebbero lo strumento meno prevedibile.
Il numero di record è limitato a 500. Oltre, ci si aspetta da un ambiente di test che generi le sue fixture tramite codice dedicato (Faker in CLI, Foundry, factory_bot, ecc.). Lo strumento web è utile fino a qualche centinaia di record; oltre, la memoria e il tempo di risposta plafonano l'esperienza.
Riproducibilità e sicurezza
I valori sono prodotti con un PRNG non deterministico: ogni esecuzione produce dati diversi. Per test che devono essere riproducibili (CI), catturate l'output una volta e committatelo. Per dati realmente sensibili (anonimizzazione di produzione), tenete a mente che la generazione lato server pubblico non è il canale giusto: preferite uno script locale che non lasci mai la vostra postazione.
Domande frequenti
Le email generate sono valide?
Il formato è valido (RFC 5322), ma il dominio è example.com o equivalente riservato
dall'IANA. Nessuna di queste email può ricevere messaggi; è volontario per evitare spam
accidentali su veri indirizzi.
Posso ottenere lo stesso set di dati più volte?
Non tramite l'interfaccia web: lo strumento non fissa un seed. Per una riproducibilità stretta, scriptate la
generazione in locale con Faker e un seed fisso ($faker->seed(1234);).
Come generare un oggetto nidificato?
Lo strumento supporta solo uno schema piatto. Per nidificati, post-processate l'output con uno script o scrivete direttamente il codice Faker corrispondente.
Perché i miei numeri sono tutti tra 0 e 1000?
È l'intervallo predefinito. Specificate un intervallo: "age": "number 18-65",
"price": "number 1-9999", ecc.
Quali sono i collegamenti con gli altri strumenti del sito?
Per UUID in quantità, vedete il generatore di UUID. Per password, il generatore di password. Per testo, il generatore di testo. Il mock data generator è lo strumento trasversale che combina più di queste generazioni.
Esempio di richiesta
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"}'
Schema di input
| Campo | Tipo | Richiesto | Predefinito |
|---|---|---|---|
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- elenca tutti gli strumenti disponibiliGET https://cdrn.fr/api/v1/tools/mock-data-generator- recupera lo schema di questo strumentoPOST https://cdrn.fr/api/v1/tools/mock-data-generator/execute- esegue questo strumento con un payload JSON