GraphQL tipizzato

Fóir genera uno schema GraphQL dai tuoi modelli, con query, mutation e input tipizzati per ciascuno. Un controllo della CLI avvisa la tua build quando i tipi di cui hai fatto il commit non corrispondono più al progetto.

Che cosa genera ogni modello

Ogni modello che contiene record produce una query singola, una query plurale che restituisce una connection paginata a cursore, mutation per creare, aggiornare ed eliminare, e input tipizzati per filtri, ordinamento e aggiornamento. I modelli con la pubblicazione attiva ricevono anche le mutation di pubblicazione e di annullamento della pubblicazione. I tuoi campi stanno al livello superiore del tipo del record, accanto ai campi di sistema che iniziano con un trattino basso.

Quando cambia lo schema di produzione

Lo schema viene servito in due canali, bozza e pubblicato. Modificare un modello cambia la bozza, e le chiavi di produzione continuano a vedere lo schema pubblicato finché una release non porta con sé la modifica. Un modello o un'operazione del tutto nuovi vengono rilasciati al momento della creazione, come un aggiornamento di modello che aggiunge solo campi facoltativi. Dopo una release, lo schema pubblico cambia per ogni consumer entro pochi secondi.

Il controllo in fase di build

foir types genera i tipi TypeScript e le selezioni del client tipizzato dal progetto. Con --check non scrive nulla e termina con un codice diverso da zero quando il file di cui hai fatto il commit differisce da una generazione nuova. Eseguito in CI, fa fallire la build quando il progetto è cambiato e i tipi di cui hai fatto il commit no. I tipi sono generati per chiave API, quindi un'operazione che la chiave non può eseguire è assente, e chiamarla è un errore di compilazione.

Il controllo a runtime

Il client generato avvisa una volta per istanza del client quando lo schema del server si è spostato dopo la generazione. Lancia FoirSchemaDriftError su una chiamata tipizzata che dipende da qualcosa che non viene più servito, come un campo o un argomento rimosso.

Dove si ferma la tipizzazione

Nei tipi generati, l'ordinamento è un tipo chiuso e verificato. I filtri sono tipizzati come unknown, e così gli argomenti e i risultati delle operazioni di namespace. Il GraphQL scritto a mano può essere tipizzato con graphql-codegen rispetto allo schema, come passo di build che gestisci tu.

Approfondisci

La guida a GraphQL elenca le query, le mutation e gli input generati per un modello e dove esplorare lo schema.