GraphQL typé

Fóir génère un schéma GraphQL à partir de vos modèles, avec des requêtes, des mutations et des entrées typées pour chacun. Une vérification CLI avertit votre build lorsque les types que vous avez commités ne correspondent plus au projet.

Ce que génère chaque modèle

Chaque modèle qui contient des enregistrements produit une requête au singulier, une requête au pluriel qui renvoie une connexion paginée par curseur, des mutations pour créer, mettre à jour et supprimer, ainsi que des entrées typées de filtre, de tri et de mise à jour. Les modèles avec publication activée reçoivent aussi des mutations de publication et de dépublication. Vos champs se trouvent au premier niveau du type d'enregistrement, à côté de champs système qui commencent par un tiret bas.

Quand le schéma de production change

Le schéma est servi sur deux canaux, brouillon et publié. Modifier un modèle change le brouillon, et les clés de production conservent le schéma publié jusqu'à ce qu'une publication emporte le changement. Un modèle ou une opération entièrement nouveau est publié dès sa création, tout comme une mise à jour de modèle qui ajoute seulement des champs facultatifs. Après une publication, le schéma public change pour tous les consommateurs en quelques secondes.

La vérification au build

foir types génère les types TypeScript et les sélections du client typé à partir du projet. Avec --check : la commande n'écrit rien et se termine avec un code non nul lorsque le fichier commité diffère d'une génération fraîche. Exécutée en CI, elle fait échouer le build quand le projet a changé et que vos types commités n'ont pas suivi. Les types sont générés par clé API, de sorte qu'une opération que la clé ne peut pas effectuer est absente, et l'appeler est une erreur de compilation.

La vérification à l'exécution

Le client généré avertit une fois par instance de client lorsque le schéma du serveur a évolué depuis la génération. Il lève FoirSchemaDriftError sur un appel typé qui dépend de quelque chose qui n'est plus servi, comme un champ ou un argument supprimé.

Où s'arrête le typage

Dans les types générés, le tri est un type fermé et vérifié. Les filtres sont typés unknown, de même que les arguments et les résultats des opérations de namespace. Le GraphQL écrit à la main peut être typé avec graphql-codegen à partir du schéma, comme étape de build dont vous êtes responsable.

Lire le détail

Le guide GraphQL liste les requêtes, mutations et entrées générées pour un modèle et indique où explorer le schéma.