Generer GraphQL-skjema fra TypeScript?
Jeg har nettopp begynt med Apollo og ønsker å eksponere noen eksisterende REST-APIer gjennom et nytt GraphQL-lag.
Disse REST-tjenestene er allerede fullt (forespørsel- og responsdatastrukturer) dekket av et omfattende sett med tilpassede Typescript-type-definisjoner.
Jeg håpet å finne en måte å gjenbruke disse eksisterende typene på, og kanskje med noen ekstra Query-typer i tillegg, kunne generere et GraphQL-skjema i stedet for å duplisere koden.
Overraskende nok ser dette ut til å være en ganske sjelden brukstilfelle? Jeg fant mange verktøy for å generere Typescript-definisjoner fra GraphQL, men den motsatte retningen ser ut til å være vanskelig.
type-graphql fungerer bare hvis alle tilpassede typer er classer. Det fungerer ikke for meg; jeg har ikke én eneste klasse, men et utall av enkle typer her.
ts2graphql har ikke blitt oppdatert på et år, og jeg får ikke engang eksempel-koden til å fungere.
Hva annet kunne jeg prøve?
Svar #1
Så vidt jeg vet er det ingen måte å fullstendig automatisk generere GraphQL-skjema fra TypeScript-kode, fordi TypeScript er mye mer uttrykksfull og kan bare beskrive GraphQL-entiteter, men ikke spørringer, abonnementer og mutasjoner (uten å bruke noen magisk navngitte generiske typer).
Jeg fant et ikke så populært prosjekt ts-graphql som kan være nyttig for deg i semi-automatisk beskrivelse av GraphQL-skjema i TypeScript.
Hva som kan være en mye bedre måte å synkronisere TypeScript og GraphQL på, er å generere TS-typer og grensesnitt fra GraphQL-skjemaet. Populære prosjekter som graphql-code-generator.com eller Apollo Server kan brukes for den tilnærmingen.
Svar #2
Pothos kan kanskje hjelpe her. Det er fokusert på å bygge et GraphQL-skjema i Typescript uten klassekravet til type-graphql. Selv om du fortsatt må definere GraphQL-skjemaet manuelt, bør du kunne utnytte de eksisterende typene dine.