Informazioni sullo strumento
La validazione con schema trasforma “la risposta sembra giusta” in un controllo di contratto ripetibile: campi obbligatori, tipi, formati, enum e struttura degli array. Questo validatore usa Ajv, la stessa libreria di molte suite di test JavaScript, con ajv-formats per i controlli di email, date-time, uuid e uri. Ogni errore è elencato con il percorso nell’istanza (/items/1/qty) e un messaggio chiaro, e vengono riportati tutti gli errori, non solo il primo. Se non hai ancora uno schema, incolla una risposta corretta e genera uno schema di partenza, poi rendilo più restrittivo a mano.
Come si usa
- Incolla lo schema a sinistra e i dati JSON a destra, oppure carica lo schema d’esempio di un ordine con i dati volutamente errati.
- Lascia la versione su “Auto” per seguire la parola chiave $schema dello schema, oppure forza 2020-12 o draft-07.
- Correggi gli errori elencati; il risultato si aggiorna mentre scrivi.
- Per iniziare un nuovo schema, incolla una risposta reale come dati e clicca “Generate schema from data”.
Validatore JSON Schema: domande frequenti
Meglio il draft 2020-12 o il draft-07?
Usa quello supportato dagli altri tuoi strumenti. OpenAPI 3.1 è allineato al 2020-12, mentre molti validatori più vecchi e gli strumenti per OpenAPI 3.0 sono più vicini al draft-07. Le differenze più visibili sono gli array tupla (prefixItems nel 2020-12, items come array nel draft-07) e $defs al posto di definitions.
Quanto è affidabile lo schema generato?
È un punto di partenza dedotto da un solo esempio: tipi, oggetti annidati, struttura degli elementi degli array, formati di stringa comuni e ogni chiave presente nell’esempio marcata come obbligatoria. Non può sapere quali campi sono opzionali, quali valori sono enum né quali sono i limiti numerici, quindi rivedilo prima di usarlo come contratto.
Perché un’email non valida viene accettata?
La parola chiave “format” viene applicata solo se il validatore abilita i controlli di formato. Questo strumento li abilita tramite ajv-formats; se il tuo framework di test non lo fa, aggiungi anche lì il plugin dei formati, altrimenti gli stessi dati passeranno.