Convertitore GraphQL in XML
Incolla uno schema o una query GraphQL. Ottieni XML pulito.
Cosa fa questo strumento
Se ti è mai toccato documentare un'API GraphQL per un team che lavora solo in XML, o collegare uno schema GraphQL a un client SOAP legacy, conosci la parte scomoda: i tipi GraphQL non si traducono uno-a-uno. Incolla qui lo schema o la query e ottieni XML ben formato in un'unica passata. Qualche definizione type, un file SDL completo o una query concreta con argomenti — il risultato è lo stesso: un documento XML completo che rispecchia la forma dei dati.
Il convertitore conosce la specifica GraphQL, non solo la sintassi di superficie. I default degli scalari vanno come ti aspetti — String diventa testo, Int e Float diventano testo numerico, Boolean diventa true/false e ID diventa una stringa. I marcatori non-null (String!) e di lista ([OrderItem!]!) sono rispettati: una lista obbligatoria compare come elemento contenitore con un figlio per item, e i campi nullable senza valore passano come elementi vuoti così la forma del documento resta coerente.
Oltre ai tipi integrati, lo strumento gestisce anche il resto del type system. I tipi input diventano elementi annidati, i valori enum vengono restituiti come testo, i tipi interface e union vengono risolti nelle loro forme concrete sottostanti, e i fragment (nominati o inline) vengono inseriti inline così l'output resta piatto e autocontenuto. Gli scalari personalizzati come DateTime, Date e JSON vengono emessi come ISO-8601 o valori serializzati. Se incolli una query con argomenti, questi sono preservati come parte dell'elemento radice, così l'XML è un resoconto fedele della richiesta, non un semplice blocco di dati.
Come si usa
Tre passi. Funziona allo stesso modo sia che incolli un singolo tipo sia uno schema completo con le query.
Incolla il tuo GraphQL (o prova l'esempio)
Butta il GraphQL così com'è nell'editor di sinistra. Un singolo type, un file SDL completo con input/enum/interface/union, o una query concreta con variabili — va tutto bene. Clicca Carica esempio se preferisci partire da una forma realistica.
Non serve togliere i commenti o riformattare la sintassi SDL. Lascialo come l'ha scritto il tuo editor — docstring con triple virgolette e commenti con cancelletto vanno entrambi bene.
Clicca Converti
Premi il pulsante verde Converti. Lo strumento legge lo schema (o la query), risolve fragment e marcatori lista/non-null e costruisce l'XML in una passata. Durante la conversione compare un breve indicatore di caricamento.
Copia l'XML
Il pannello di destra si riempie di XML indentato e ben formato che qualsiasi parser XML conforme agli standard accetterà. Copialo direttamente nella tua richiesta SOAP, nella documentazione, in una fixture o in un esempio XSD.
Quando serve davvero
Documentazione XML per un'API GraphQL
Doc interne o per partner che vivono in XML (DITA, DocBook, riferimenti basati su XSD). Incolli lo schema e ottieni payload XML di esempio allineati ai tipi reali — niente traduzione a mano.
Generare fixture XML da uno schema
Test di contratto, snapshot test o un mock server che parla XML. Gli passi lo schema che hai già e ottieni fixture XML coerenti con ogni lista, campo nullable e tipo annidato al posto giusto.
Ponte verso client SOAP legacy
Un sistema partner accetta solo payload XML ma il tuo backend parla GraphQL. Incolli la query e il tipo di risposta e ottieni un corpo XML di partenza da infilare nella richiesta SOAP.
Migrazione e analisi di schema
Uscire da GraphQL verso un'API basata su XML (o semplicemente confrontare le due forme). Ottieni una versione XML affiancata di ogni tipo, così anche i reviewer che non leggono SDL possono seguire.
Domande frequenti
Come vengono gestiti type, input, enum, interface e union?
type e input diventano elementi contenitore con un figlio per ogni campo. I valori enum vengono restituiti come testo semplice (il nome dell'enum, in maiuscolo, esattamente come dichiarato nell'SDL). interface si risolve nei suoi campi più quelli del tipo che la implementa quando conosciamo il tipo concreto. union si risolve nella forma del membro corrispondente. Per le regole complete, consulta il riferimento del linguaggio dei tipi GraphQL.
Quali default valgono per String, Int, Float, Boolean e ID?
String e ID diventano contenuto testuale. Int è un intero semplice. Float è un decimale senza zeri finali. Boolean è il testo minuscolo true o false. Combaciano con le definizioni scalari della specifica GraphQL, così l'output passa pulito in un parser XML.
Come sono trattati i marcatori non-null (!) e lista ([T])?
Il non-null (String!) è trattato come un campo che deve comparire — i campi nullable senza valore escono come elementi vuoti così la forma del documento resta prevedibile. Le liste ([OrderItem!]!) diventano un elemento contenitore con un figlio per item, con il nome del tipo dell'elemento — per esempio items: [OrderItem!]! diventa <items><OrderItem/><OrderItem/></items>. Le liste annidate ([[Int]]) si annidano allo stesso modo.
I fragment vengono risolti?
Sì. I fragment nominati (...OrderFields) e quelli inline (... on Order { ... }) vengono risolti inline, così l'XML resta piatto e autocontenuto. Non serve incollare le definizioni dei fragment a parte — se sono nello stesso blocco, lo strumento li collega. Questo ricalca il normale modello di esecuzione delle query, in cui i fragment vengono distribuiti nel selection set prima che la risposta venga costruita.
E gli scalari personalizzati come DateTime?
Gli scalari personalizzati più noti (DateTime, Date, Time, UUID, JSON) vengono emessi come testo ISO-8601 o valori serializzati per convenzione — in linea con quello che fa la maggior parte delle librerie scalari. Gli scalari personalizzati sconosciuti ricadono su testo stringa, così nulla viene buttato in silenzio. Se ti serve un formato specifico, post-processa l'XML o rinomina lo scalare.
Posso incollare una query con argomenti, non solo uno schema?
Sì. Incolla una query con variabili e argomenti — per esempio query GetOrder($orderId: ID!) { order(id: $orderId) { ... } } — e gli argomenti escono come attributi sull'elemento radice. I campi selezionati determinano quali parti della forma di risposta vengono serializzate, quindi l'XML corrisponde a ciò che la query restituirebbe davvero, non al tipo completo.
Altri strumenti utili
GraphQL in XML è solo un pezzo del puzzle. Questi strumenti ci vanno bene insieme: