web-dev-qa-db-fra.com

Apollo GraphQL Server + TypeScript

Je travaille sur un projet récemment, qui a une pile de serveurs node.js + express + TypeScript + Apollo. Et lors de recherches sur le client Apollo, je suis tombé sur une section TypeScript. Mais rien de tel n'a été réservé au serveur, ce qui me laisse une liberté de choix dans ce cas.

La question est donc la suivante: existe-t-il des pratiques recommandées pour la mise en œuvre du serveur graphique Apollo avec TypeScript ou que dois-je au moins éviter?

9
naffiq

J'ai écrit une petite bibliothèque et un CLI pour cela. Il génère des typages TypeScript pour le serveur (selon votre schéma) et le client (selon vos documents schéma et GraphQL) . Il génère également une signature résolveur et très personnalisable.

Vous pouvez l'essayer ici: https://github.com/dotansimha/graphql-code-generator

L'idée sous-jacente était de permettre au développeur de tirer le meilleur parti de GraphQL et des saisies générées, tout en facilitant la personnalisation de la sortie générée.

11
Dotan Simha

J'utilise un GraphQL CLI . Vous l'installeriez comme si

npm install -g graphql-cli

puis générez votre projet GraphQL avec le support de TypeScript 

 enter image description here

Plus d'informations: https://oss.prisma.io/content/graphql-cli/05-Boilerplates.html

5
AFD

J'utilise apollo-server-express avec TypeScript pour certains projets et j'ai une petite démo sur gitHub avec.

Je ne suis pas sûr de best practices, mais apollo-server-express fournit en gros un gestionnaire graphqlExpress et graphiqlExpress.

Consultez la documentation sur Apollo Server avec Express pour plus de détails.

1
MarcoDaniels

J'utilise le serveur TypeScript + apollo graphql depuis un certain temps et j'ai démarré un modèle qui incorpore dotangraphql-code-generator ainsi qu'une structure de dossier définie et une approche qui permet de tout utiliser ensemble. L’objectif est de rester simple, mais je continue d’y ajouter des solutions en trouvant des bonnes pratiques et des bibliothèques utiles.

Le repo de github est ici .

0
henry74