Modularizzazione dello schema con le estensioni dei tipi
Mantenga gestibili gli schemi GraphQL di grandi dimensioni suddividendoli in più file SDL ed estendendo i tipi radice condivisi con la parola chiave extend in Spring Boot.
Modularizzazione dello schema con le estensioni dei tipi è una lezione GraphQL APIs with Spring Boot gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento GraphQL APIs with Spring Boot, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso GraphQL APIs with Spring Boot include 4 lezioni in totale.
Il problema dello schema monolitico
Con la crescita di un'API, un singolo file schema.graphqls può arrivare a contenere migliaia di righe, diventando difficile da consultare e soggetto a conflitti durante il merge.
La modularizzazione suddivide lo schema per funzionalità, così ogni team gestisce una sezione ben definita.
Modularizzazione e stitching a confronto
Si tratta di un approccio diverso dallo schema stitching. Lo stitching unisce schemi provenienti da servizi separati. La modularizzazione suddivide lo schema di un unico servizio in molti file che vengono caricati nello stesso runtime.
Più file SDL in Spring
Spring for GraphQL carica automaticamente ogni file .graphqls nella directory src/main/resources/graphql/ e li unisce in un unico schema.
graphql/
book.graphqls
author.graphqls
review.graphqlsIl problema del tipo radice unico
GraphQL consente un solo tipo Query. Se due file dichiarano entrambi type Query, la compilazione dello schema fallisce con un errore di tipo duplicato.
Estendere il tipo radice
Dichiari type Query una sola volta, quindi utilizzi extend type Query negli altri file per aggiungere campi. Le varie parti vengono unite in un'unica radice.
# book.graphqls
type Query { books: [Book!]! }
# author.graphqls
extend type Query { authors: [Author!]! }Estendere i tipi oggetto
extend funziona con qualsiasi tipo oggetto, non solo con i tipi radice. Un modulo per le recensioni può aggiungere un campo a Book senza modificare il file del libro.
# review.graphqls
extend type Book {
reviews: [Review!]!
}Anche i resolver restano modulari
Ogni modulo dispone del proprio controller. Il campo esteso di Book viene risolto da un @SchemaMapping nel controller del modulo delle recensioni.
@Controller
public class ReviewController {
@SchemaMapping(typeName = "Book")
public List<Review> reviews(Book book) {
return reviewService.forBook(book.getId());
}
}Condividere i tipi comuni
I tipi trasversali, come PageInfo, o gli enum condivisi risiedono in un file common.graphqls. Ogni modulo vi fa riferimento senza ridefinirli.
# common.graphqls
type PageInfo {
hasNextPage: Boolean!
endCursor: String
}Organizzare per funzionalità
Raggruppi i file SDL e i controller per funzionalità, non per tipo GraphQL. Consideri mentalmente book.graphqls accanto a BookController, così una modifica alla funzionalità interessa un'unica area coerente.
Convalida all'avvio
Spring assembla e convalida lo schema unificato all'avvio. Se un extend fa riferimento a un tipo inesistente, l'applicazione termina immediatamente mostrando un errore chiaro e individua così gli errori tempestivamente.
Best practice
Mantenga in buona salute gli schemi modulari:
- Dichiari ogni tipo radice una sola volta ed esegua le estensioni altrove
- Utilizzi un file SDL e un controller per ogni funzionalità
- Centralizzi i tipi condivisi in un file comune
- Lasci che la convalida all'avvio verifichi le unioni
Verifica rapida
Verifichi le Sue conoscenze sulla modularizzazione degli schemi.
Riepilogo
Ha modularizzato uno schema di grandi dimensioni:
- Ha suddiviso l'SDL in più file per funzionalità, uniti automaticamente da Spring
- Ha dichiarato i tipi radice una sola volta e aggiunto campi con
extend - Ha esteso qualsiasi tipo oggetto da un altro modulo
- Ha centralizzato i tipi condivisi e mantenuto modulari i resolver
Gli schemi modulari si adattano in modo ordinato alla crescita di team e funzionalità.
Impara GraphQL APIs with Spring Boot con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 12
- Lezioni
- 48
Domande Frequenti
La lezione «Modularizzazione dello schema con le estensioni dei tipi» è gratuita?
Sì — il testo completo di «Modularizzazione dello schema con le estensioni dei tipi» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso GraphQL APIs with Spring Boot, passa a CoddyKit PRO. Il corso GraphQL APIs with Spring Boot include 4 lezioni in totale.
Cosa imparerò in «Modularizzazione dello schema con le estensioni dei tipi»?
Mantenga gestibili gli schemi GraphQL di grandi dimensioni suddividendoli in più file SDL ed estendendo i tipi radice condivisi con la parola chiave extend in Spring Boot. Eserciti GraphQL APIs with Spring Boot con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare GraphQL APIs with Spring Boot?
Non è richiesta alcuna esperienza precedente. GraphQL APIs with Spring Boot su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Modularizzazione dello schema con le estensioni dei tipi»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione GraphQL APIs with Spring Boot?
Sì. Ogni lezione GraphQL APIs with Spring Boot include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Creare direttive personalizzate
- Fondamenti dello schema stitching
- Unire più schemi GraphQL
- Modularizzazione dello schema con le estensioni dei tipi