GraphQL til JSON-eksempel
Indsæt et GraphQL-skema, få et JSON-dokument der passer til Query-typen — hvert felt udfyldt, lister fyldt, enums valgt
Input
Output
Hvad er værktøjet GraphQL til JSON-eksempel?
At mocke et GraphQL-API i din testsuite betyder som regel, at man skriver fake data i hånden for hver type — kedeligt, skrøbeligt, og skemaet driver væk fra dine fixtures inden for en sprint eller to. Denne side læser dit GraphQL Schema Definition Language og spytter et JSON-dokument ud, der matcher det. Indsæt din SDL til venstre, og det højre panel giver dig et udfyldt JSON-objekt: hvert felt af Query-typen udfyldt, lister fyldt med to elementer, enums sat til deres første værdi og custom scalars som DateTime eller URL mappet til fornuftige defaults.
Der er ingen parser-afhængighed indlæst på siden — SDL-walkeren er håndskrevet, ~600 linjer, og dækker hver konstruktion, der dukker op i et rigtigt skema: type, interface, union, enum, input, scalar, list- og non-null-modifikatorer og selvrefererende typer. Outputtet er almindelig JSON ifølge RFC 8259, indrykket med to mellemrum, klar til at smide ind i en fetch-mock eller et Postman-eksempelsvar. Felter med navne som email, name, phone, currency eller status får værdieksempler, der passer; alt andet falder tilbage på en generisk "sample text".
Det hele sker i din browser. Dit skema forlader aldrig siden, der laves intet netværkskald, og konverteringen er øjeblikkelig.
Sådan bruger du værktøjet GraphQL til JSON-eksempel
Tre hurtige trin. Knapperne, der beskrives nedenfor, er de faktiske knapper på denne side.
Indsæt, upload eller indlæs et eksempel
Indsæt et GraphQL-skema i det venstre Input-panel — konverteringen er automatisk cirka en tredjedel sekund efter, du holder op med at skrive, så der er ingen Konverter-knap. Klik på Upload for en .graphql- eller .gql-fil, eller tryk på Eksempel for at indlæse et realistisk e-handels-Order-skema. Et typisk input ser sådan ud:
type Query { order(id: ID!): Order } type Order { id: ID! customer: Customer! items: [OrderItem!]! total: Money! status: OrderStatus! placedAt: DateTime! }Både skemaer i serverstil (med type Query { ... }) og selvstændige typefiler virker. Walkeren vælger Query som rod, hvis den findes, ellers den første objekttype. De accepterede former matcher det, som værktøjer som graphql-js parser ved opstart.
Læs JSON-outputtet
Det højre Output-panel renderer JSON-eksemplet med to mellemrums indrykning. Objekttyper bliver til objekter. Lister bliver til to-element-arrays. Enums bliver til deres første værdi som streng. Custom scalars får fornuftige defaults — DateTime bliver et ISO-8601-tidsstempel, URL bliver "https://example.com/...", JSON bliver {}. Selvrefererende typer (type Person { friends: [Person!]! }) skæres af ved dybde 4 og afsluttes med null, så siden aldrig hænger.
Kopier eller download
Tryk på Kopier for at gribe JSON til en fixture-fil, mock-server eller fetch-stub. Tryk på Download for at gemme som sample.json. Ryd-knappen i input-panelet stiller dig tilbage til en tom tilstand. Konverteringen sker fuldstændigt på klientsiden — dit skema forlader aldrig siden.
Hvornår du faktisk ville bruge det her
Mock-GraphQL-server-fixtures
Du fyrer en mock-backend op med json-graphql-server eller en Apollo Server-mock og har brug for en start-JSON-fil, der har formen af dit skema. Indsæt SDL'en, kopier outputtet, og du er 80% i mål — juster navne og ID'er, send fixturen ud.
Eksempelsvar i Postman / Insomnia
At dokumentere en GraphQL-endpoint i Postman eller Insomnia betyder at udfylde en eksempel-svarbody for hver operation. Generer JSON-formen ud fra typen, indsæt i eksemplet, rediger værdierne så de matcher testcasen. Bedre end at skrive nestede objekter i hånden fra bunden.
Frontend-typeudkast
Når backenden lancerer en ny GraphQL-type, har frontend ofte brug for et eksempel-payload for at koble UI'en op, før endpointen er rigtig. Konverter skemaet til JSON, smid det i en fixture og byg komponenterne mod fixturen. Skift til live data, når API'en er klar.
Skemaudforskning
Det er fint nok at læse en SDL på 300 linjer; men det går hurtigere at se, hvordan et rigtigt svar ser ud. JSON-eksemplet gør skemaet konkret — du kan med det samme se, hvilke felter der er nestede, hvilke der er arrays, og hvor enums bor. Nyttigt som onboarding-hjælp til ingeniører, der er nye på en service.
Almindelige spørgsmål
Kører den forespørgslen mod en rigtig server?
Nej. Siden genererer kun et eksempeldokument, der passer til skemaets form. Der er ikke noget netværkskald. Hvis du skal ramme en rigtig GraphQL-endpoint, så brug GraphiQL eller en hvilken som helst GraphQL-klient.
Hvorfor stopper min selvrefererende type efter nogle få niveauer?
Der er en rekursionsgrænse ved dybde 4. Et skema som type Person { friends: [Person!]! } ville ellers generere et uendeligt nestet objekt. Ud over grænsen bliver værdien null, så JSON'en forbliver endelig og pænt udskrivbar.
Hvilken rod-type bruger den?
Den leder efter type Query først. Hvis den mangler, vælger den den første objekttype, der er defineret i skemaet (springer input-typer over). Du kan flytte en hvilken som helst type til toppen ved at omarrangere din SDL.
Bliver custom scalars håndteret?
Ja. De almindelige (DateTime, Date, Time, URL, Email, JSON, BigInt) har fornuftige defaults indbygget. Alt andet falder tilbage på en generisk placeholder-streng. Hvis din scalar skal mappe til noget bestemt, så rediger outputtet i hånden — det er bare JSON.
Er JSON'en gyldig i forhold til mit skema?
Den er form-gyldig: hvert obligatorisk felt er udfyldt, typer matcher deres deklarerede scalar/object/list, enums bruger en rigtig enum-værdi. Den er ikke semantisk gyldig (mailen er ikke en rigtig mail, ordre-ID'et er ikke et rigtigt ID). Brug som startpunkt for en fixture, ikke som erstatning for tests.
Bliver mit skema sendt til en server?
Nej. Konverteringen kører fuldstændigt i din browser. Intet uploades, intet logges. Sikkert at indsætte interne eller ikke-udgivne skemaer.
Andre GraphQL- og JSON-værktøjer
At generere et eksempel er kun en del af GraphQL-arbejdsgangen. Disse værktøjer dækker resten: