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.

Relaterte artikler