GraphQL til XML-konverterer
Lim inn et GraphQL-skjema eller en spørring. Få ren XML tilbake.
Hva verktøyet gjør
Har du noen gang måttet dokumentere et GraphQL-API for et team som bare jobber i XML, eller koble et GraphQL-skjema mot en gammel SOAP-klient, vet du hvor det klemmer: GraphQL-typer oversetter ikke én-til-én. Lim inn skjemaet eller spørringen her og få velformet XML tilbake på én runde. En håndfull type-definisjoner, en full SDL-fil eller en konkret spørring med argumenter — resultatet er det samme: et komplett XML-dokument som speiler formen på dataene.
Konverteren kan GraphQL-spesifikasjonen, ikke bare overflateskriften. Standardene for skalarer lander slik du forventer — String blir tekst, Int og Float blir numerisk tekst, Boolean blir true/false og ID blir en strengverdi. Non-null-markører (String!) og list-markører ([OrderItem!]!) respekteres: en obligatorisk liste dukker opp som et containerelement med ett barn per element, og nullable-felter uten verdi kommer gjennom som tomme elementer slik at formen på dokumentet holder seg konsistent.
Ut over de innebygde typene håndterer verktøyet også resten av typesystemet. input-typer blir til nestede elementer, enum-verdier kommer gjennom som strengtekst, interface- og union-typer løses opp mot sine konkrete underliggende former, og fragmenter (navngitte eller inline) bakes inn slik at utdataene er flate og selvstendige. Egendefinerte skalarer som DateTime, Date og JSON skrives ut som ISO-8601 eller strengifiserte verdier. Limer du inn en query med argumenter, bevares argumentene som en del av rotelementet, slik at XML-en er en tro gjengivelse av forespørselen og ikke bare en dataklump.
Slik bruker du det
Tre steg. Fungerer likt enten du limer inn én type eller et helt skjema med spørringer.
Lim inn GraphQL (eller prøv eksemplet)
Slipp GraphQL rett inn i den venstre editoren. En enkelt type, en full SDL-fil med input/enum/interface/union eller en konkret spørring med variabler — alt går. Trykk på Last inn eksempel hvis du heller vil starte med en realistisk form.
Du trenger ikke å fjerne kommentarer eller reformatere SDL-syntaksen. La det stå slik editoren skrev det — både trippelsiterte docstrings og hash-kommentarer er greit.
Trykk på Konverter
Klikk på den grønne Konverter-knappen. Verktøyet leser skjemaet (eller spørringen), løser opp fragmenter og list-/non-null-markører og bygger XML-en i én runde. En kort lasteindikator vises mens konverteringen pågår.
Kopier XML-en
Høyre panel fylles med innrykket, velformet XML som enhver standardtro XML-parser godtar. Kopier det rett inn i SOAP-forespørselen din, dokumentasjonen, fixturen eller XSD-eksempelet.
Når det faktisk redder dagen
XML-basert dokumentasjon for et GraphQL-API
Intern dokumentasjon eller partnerdokumentasjon som lever i XML (DITA, DocBook, XSD-basert referanse). Lim inn skjemaet, få eksempel-XML-payloads som stemmer med de ekte typene — ingen håndoversettelse.
Generer XML-fixtures fra et skjema
Kontraktstester, snapshot-tester eller en mock-server som snakker XML. Gi den skjemaet du allerede har og få konsistente fixture-XML-er der hver liste, nullable og nestet type sitter riktig.
Bro til eldre SOAP-klienter
Et partnersystem tar bare XML-payloads, mens backenden din snakker GraphQL. Lim inn spørringen og svartypen og få en XML-kropp som utgangspunkt til SOAP-forespørselen.
Skjemamigrering og analyse
Flytte ut av GraphQL over til et XML-basert API (eller bare sammenligne de to formene). Få en XML-versjon side ved side av hver type, slik at de som ikke leser SDL henger med.
Vanlige spørsmål
Hvordan håndteres type, input, enum, interface og union?
type og input blir containerelementer med ett barn per felt. enum-verdier kommer gjennom som ren strengtekst (enum-navnet, store bokstaver, nøyaktig som erklært i SDL-en). interface løses opp til sine egne felter pluss feltene fra typen som implementerer den, når vi kjenner den konkrete typen. union løses opp til formen til det matchende medlemmet. Se referansen for GraphQL type language for alle reglene.
Hvilke standarder brukes for String, Int, Float, Boolean og ID?
String og ID blir tekstinnhold. Int er et vanlig heltall. Float er et desimaltall uten etterhengende nuller. Boolean er teksten i små bokstaver true eller false. Det stemmer med skalardefinisjonene i GraphQL-spesifikasjonen, så utdataene går rent gjennom en XML-parser.
Hvordan behandles non-null (!)- og list ([T])-markører?
Non-null (String!) behandles som et felt som må dukke opp — nullable-felter uten verdi kommer gjennom som tomme elementer, slik at dokumentformen holdes forutsigbar. Lister ([OrderItem!]!) blir til et containerelement med ett barn per element, oppkalt etter elementtypen — for eksempel blir items: [OrderItem!]! til <items><OrderItem/><OrderItem/></items>. Nestede lister ([[Int]]) nestes på samme måte.
Blir fragmenter løst opp?
Ja. Navngitte fragmenter (...OrderFields) og inline-fragmenter (... on Order { ... }) bakes inn på plass, slik at XML-en blir flat og selvstendig. Du trenger ikke lime inn fragment-definisjonene separat — ligger de i samme blokk, knytter verktøyet dem sammen. Det matcher den vanlige spørringsutførelsesmodellen, der fragmenter spres ut i selection set-et før svaret bygges.
Hva med egendefinerte skalarer som DateTime?
Velkjente egendefinerte skalarer (DateTime, Date, Time, UUID, JSON) skrives ut som ISO-8601-tekst eller strengifiserte verdier etter konvensjon — i tråd med hva de fleste skalarbibliotekene gjør. Ukjente egendefinerte skalarer faller tilbake på strengtekst, slik at ingenting forsvinner i stillhet. Trenger du et bestemt format, etterbehandle XML-en eller gi skalaren nytt navn.
Kan jeg lime inn en spørring med argumenter, ikke bare et skjema?
Ja. Lim inn en query med variabler og argumenter — f.eks. query GetOrder($orderId: ID!) { order(id: $orderId) { ... } } — så kommer argumentene gjennom som attributter på rotelementet. De valgte feltene bestemmer hvilke deler av svarformen som serialiseres, så XML-en samsvarer med det spørringen faktisk ville returnert, ikke med hele typen.
Andre verktøy du kan trenge
GraphQL til XML er bare én brikke i puslespillet. Disse verktøyene passer godt sammen med det: