Linguaggi per webservices:XML e JSON - Fabio Tropia
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Linguaggi per webservices:XML e JSON Lo scambio di dati fra microservizi di architetture distribuite pretendono linguaggi semplici, leggeri e cross-platform che trasportino dati strutturati; XML (per SOAP) e JSON (per REST) sono i linguaggi principe di tali applicazioni XML (eXtensible Markup Language) è un linguaggio descrittivo orientato alla trasmissione dei dati, “fratello maggiore” del già noto HTML, orientato alla Descrizione dei dati per il layout web rappresentato in un browser. Possiamo anche dire che HTML è un sottoinsieme di XML, sia perché ha Un campo di azioni più ristretto, sia perché ha dei vincoli che XML non ha, Tranne uno, XML è CASE SENSITIVE, HTML no. Principali caratteristiche di XML: ● Nato nel 1998 da W3C come semplificazione di SGML (“padre” di HTML) ● Tag non predefiniti e semanticamente trasportanti informazioni ● Interfaccia multiuso per qualsiasi programma ● Soggetto ad organizzazione del tipo “albero di gerarchia” ● Possibilità di uso di CSS per la rappresentazione (poco impiegato) ● Necessità di documenti rigorosamente well-formed ● Prologo obbligatorio con metadati ● Possibilità di commenti (stessa sintassi dell’HTML) ● Istruzioni di processo (per interfacciamento con linguaggi di programmazione) ● Uso dei DTD (document type definition) ● Uso di URL ● Namespace (come in C++) per evitare conflitti di scope nei tag dello stesso documento
Linguaggi per webservices:XML e JSON ● I tag di xml hanno la stessa sintassi ... dei tag open- close di html, ma non sono predefiniti, sono generati da chi usa il linguaggio xml a seconda della necessità dello sviluppatore ● Possono essere utilizzati gli attributi, ma si consiglia di farlo con cautela per non complicare troppo il linguaggio e perdere di vista l’albero delle gerarchie. Ogni attributo deve OBBLIGATORIAMENTE essere messo fra doppi apici ● Non esistono tag di tipo “empty” (es. HTML ) Un documento well-formed non deve contenere errori di sintassi, altrimenti il suo parsing potrebbe essere sbagliato e portare gravi errori per i quali non si tratta di pagine web mal visualizzate ma di informazioni errate che potrebbero generare seri bug nel programma! ● Prologo obbligatorio con v1.0 ● Attributi fra apici ● Rispetto del case-sensitive ● Niente spazi nel tag ● No tag inizianti per numero ● Niente caratteri speciali nei tag ● Impossibile l’uso di accenti nei tag ● Ogni tag aperto deve essere chiuso Il parsing è l’interpretazione ● Tag “parent” chiuso dopo il suo “child” dei dati trasmessi da XML ● Esistenza di un solo elemento radice per essere strutturati all’interno del programma di utilizzo degli stessi
Linguaggi per webservices:XML e JSON Il prologo XML non contiene dei dati veri e propri, ma metadati (informazioni sul documento XML), utili ai programmi che utilizzeranno quell’XML, come, ad esempio, informazioni sulla versione XML, sul set di caratteri utilizzato, sulla struttura etc. Il prologo è posto ad inizio del documento può contenere: ● Una dichiarazione XML (obbligatoria) ● DTD ● Commenti ● Istruzioni di processo I Document Type Definition validano la struttura del documento, evitando la comparsa di elementi estranei e quindi assicurano coerenza e congruenza dei racchiuse fra come la dichiarazione XML, valori trasmessi. sono utilizzate per comunicare informazioni a Es. una data trasmessa come 2018-03-15 è programmi esterni al documento. diversa da una trasmessa come 15/3/18 pur La loro forma standard è: portando la stessa informazione. Il target è obbligatorio e indica un’applicazione e Si possono usare DTD comuni o standard, possono trovarsi ovunque all’interno del documento basta dichiararli nel prologo con la sintassi Esempio: Esempio ] > presente l’attributo sesso e che il nome venga prima del cognome. La sintassi dei DTD richiede uno studio dedicato che si consiglia di approfondire #PCDATA = elemento di testo
Linguaggi per webservices:XML e JSON Esempio di uso di XML per la trasmissione di un database relazionale ...altre tabelle... Segue codifica di esempio...
Linguaggi per webservices:XML e JSON Esempio di uso di XML per la trasmissione di un database relazionale
Linguaggi per webservices:XML e JSON Cenni su XSD Uno dei principali vantaggi dell’XML Schema rispetto ai DTD di XML 1.0 è l’esistenza dei tipi di dati, ad esempio il contenuto di un elemento con DTD deve essere specificato come #PCDATA (qualsiasi testo) e quindi: un documento contenente ad esempio ABC21 verrebbe tranquillamente validato dal parser senza segnalare errori. Gli schemi promettono di risolvere questi problemi garantendo una validazione più potente introducendo ad esempio dei tipi di dato, permettendo di specificare quindi che il contenuto dell’elemento è un numero intero. Inoltre gli XML Schema sono essi stessi dei documenti XML, mentre i DTD sono un qualcosa di “estraneo”, perché definiti con un linguaggio a parte integrato su XML, così come ad esempio i CSS si integrano con HTML. Esempio:
Linguaggi per webservices:XML e JSON Poichè è facile, riguardo al SOAP, confondere XSD con WSDL, ecco un chiarimento: ● WSDL (linguaggio di descrizione dei servizi Web) descrive il servizio e le sue operazioni: come viene chiamato il servizio, quali metodi offre, quale tipo di parametri e valori di ritorno hanno questi metodi? È, quindi, una descrizione del comportamento del servizio: è la funzionalità. ● XSD (Xml Schema Definition) descrive la struttura statica dei tipi di dati complessi scambiati da tali metodi di servizio. Descrive i tipi, i loro campi, eventuali restrizioni su quei campi (come la lunghezza massima o un modello regex) e così via. In pochissime parole WSDL contiene XSD ed in WSDL si possono dichiarare operazioni, ma non in XSD.
Linguaggi per webservices:XML e JSON JSON (JavaScript Object Notation) è un linguaggio descrittivo sottoinsieme di Javascript, orientato alla trasmissione dei dati, nato nell’integrazione dei dati client-side ed oggi molto diffuso per la trasmissione di dati nei microservizi dell’architettura SOA, segnatamente fra i media-type REST Principali caratteristiche di JSON: ● Possiede una sintassi per istanziare oggetti complessi dinamicamente ● Non esiste il concetto di classe ● Aggiunta dinamica di nuove proprietà di un oggetto ● Uguale trattazione di liste, mappe, array e strutture ● Autotipizzazione e casting dinamico dei valori ● Costituito da due soli concetti: oggetto e lista (object and array) Oggetto: una coppia nome/valore separata da due punti, ogni oggetto è Ogni elemento è ricondotto distinto dall’altro con una virgola a queste due primitive che vengono combinate fra loro ricorsivamente per strutturare l’intero documento Lista: una sequenza ordinata di valori
Linguaggi per webservices:XML e JSON Valori accettati da JSON ● Tutte le stringhe unicode (fra doppi apici) Tipi complessi (come date, ad ● Numeri di qualsiasi tipo esempio) vengono trattate ● Sequenze di escape “C style” come semplici stringhe ● Valori booleni ● Liste (che possono contenere oggetti di tipo fra loro diverso) ● Altri oggetti Non esistono tipi predefiniti, gli oggetti si autotipizzano Anche tramite contenuto JSON sottende il concetto di albero gerarchico
Linguaggi per webservices:XML e JSON Java e JSON Il metodo .put() crea oggetti JSON, il .get() interroga le proprietà degli oggetti, mentre il metodo .parse() viene usato per leggere un JSON presente in una stringa La libreria GSON di Google è utile per conversioni di oggetti JSON→ Java e viceversa. GSON può lavorare con qualsiasi oggetto Java, anche un oggetto per il quale non si dispone del codice e già esistente nel codice stesso.
Linguaggi per webservices:XML e JSON Rifacendoci al già visto esempio sul mini-DB relazionale: {“azienda”:[ {“cliente”:[ {“id”:1,”nome”:”tizio”,”cognome”:”caio”, “indirizzo”:”via pinco pallino,38”, “fattura”:[ {“numero”:”100/2015”,”data”: ”17/05/2015”,”importo”:350}, {“numero”:”107/2015”,”data”: ”11/06/2015”,”importo”:75.62}]}, {“id”:2,”nome”:”sempronio”,”cognome”: ”rossi”,“indirizzo”:”via vattelapesca, 2”, Esistono librerie open-source “fattura”:[ che traducono automaticamente … tramite php RDB in JSON … (o XML), anche se conviene … sempre “monitorare” }]} la loro azione ]} ]}
Puoi anche leggere