Opsætning og administration af gateway
Konfigurér og udrul en Apollo Gateway for at sammensætte og eksponere dine federerede subgrafer som én samlet graf.
Opsætning og administration af gateway er en gratis GraphQL-API'er med Spring Boot-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i GraphQL-API'er med Spring Boot, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. GraphQL-API'er med Spring Boot-kurset indeholder 4 lektioner i alt.
Gateway: Den samlede API
I GraphQL Federation fungerer Apollo Gateway som det centrale indgangspunkt for alle klientapplikationer. Tænk på den som hjernen, der forstår hele din supergraf.
Den tager flere uafhængige GraphQL-tjenester (kaldet undergrafer) og kombinerer deres skemaer til ét samlet skema, som klienterne bruger.
Hvorfor en gateway er nødvendig
Med en mikrotjenestearkitektur kan du have mange backend-tjenester, som hver har deres egen GraphQL-API. Uden en gateway skulle klienterne kende til og forespørge hver tjeneste individuelt.
- Samlet slutpunkt: Klienter interagerer med én GraphQL-API.
- Skemakomposition: Gatewayen sammensætter automatisk skemaerne fra alle undergrafer.
- Forenklet klientlogik: Klienterne behøver ikke vide, hvilken tjeneste der ejer hvilke data.
Sådan fungerer gatewayen
Når en klient sender en forespørgsel til gatewayen, sker der følgende:
- Gatewayen modtager forespørgslen.
- Den analyserer forespørgslen i forhold til det sammensatte supergraf-skema.
- Den opdeler forespørgslen i mindre dele og afgør, hvilken undergraf der ejer hvert stykke data.
- Den sender underforespørgsler til de relevante undergrafer.
- Derefter kombinerer den resultaterne fra disse undergrafer til ét svar til klienten.
Gateway-implementeringer
Selvom dine undergrafer kan bygges med Spring Boot (eller et hvilket som helst andet framework), implementeres selve gatewayen ofte med Apollos egne værktøjer.
Den mest almindelige og robuste implementering er Apollo Server Gateway, som er en Node.js-baseret server, der er udviklet specifikt til federation. Denne lektion fokuserer på at konfigurere denne standardgateway.
Grundlæggende konfiguration af gatewayen (Node.js)
Lad os konfigurere en minimal Apollo Gateway. Opret først et nyt Node.js-projekt, og installér de nødvendige pakker:
npm init -y
npm install @apollo/gateway apollo-serverOpret derefter en index.js-fil:
const { ApolloGateway, RemoteGraphQLDataSource } = require("@apollo/gateway");
const { ApolloServer } = require("apollo-server");
const gateway = new ApolloGateway({
serviceList: [
{ name: "products", url: "http://localhost:4001/graphql" },
],
buildService({ name, url }) {
return new RemoteGraphQLDataSource({ url });
},
});
const server = new ApolloServer({ gateway });
server.listen({
port: process.env.PORT || 4000
}).then(({ url }) => {
console.log(`🚀 Gateway ready at ${url}`);
});Konfiguration af undergrafer
I den foregående kode er arrayet serviceList afgørende. Det fortæller gatewayen, hvilke undergrafer der findes, og hvor de kan findes. Hvert objekt i arrayet skal have to egenskaber:
name: En entydig identifikator for undergrafen (f.eks."products").url: Det endpoint, hvor undergrafens GraphQL-API kører (f.eks."http://localhost:4001/graphql").
Tilføjelse af flere undergrafer
Efterhånden som du udvikler flere mikrotjenester med GraphQL-API'er, tilføjer du dem blot til serviceList. Gatewayen sammensætter automatisk deres skemaer til den samlede graf.
Sådan tilføjer du en reviews-undergraf, der kører på port 4002:
const { ApolloGateway, RemoteGraphQLDataSource } = require("@apollo/gateway");
const { ApolloServer } = require("apollo-server");
const gateway = new ApolloGateway({
serviceList: [
{ name: "products", url: "http://localhost:4001/graphql" },
{ name: "reviews", url: "http://localhost:4002/graphql" },
],
buildService({ name, url }) {
return new RemoteGraphQLDataSource({ url });
},
});
const server = new ApolloServer({ gateway });
server.listen({
port: process.env.PORT || 4000
}).then(({ url }) => {
console.log(`🚀 Gateway ready at ${url}`);
});Kørsel af og adgang til gatewayen
Når din index.js er konfigureret, kan du starte gatewayen:
node index.jsKonsollen viser URL'en, hvor din gateway kører, typisk http://localhost:4000/. Åbn denne URL i din browser for at få adgang til GraphQL Playground- eller GraphiQL-grænsefladen fra Apollo Server.
Forespørgsler til den samlede graf
Klienter sender deres GraphQL-forespørgsler direkte til gatewayens URL. Gatewayen håndterer al intern routing og datahentning fra undergraferne.
En forespørgsel, der kombinerer data fra både en products- og en reviews-undergraf, kan for eksempel se sådan ud:
query GetProductDetails {
product(id: "prod-1") {
name
price
reviews {
id
rating
comment
}
}
}Tip til administration af gatewayen
Ud over den indledende konfiguration omfatter administration af gatewayen flere bedste praksisser:
- Implementering: Implementér gatewayen som en selvstændig tjeneste, ofte sammen med dine undergrafer.
- Overvågning: Brug værktøjer til at overvåge dens ydeevne, fejlprocenter og latenstid.
- Skalering: Gatewayen kan skaleres horisontalt for at håndtere øget klienttrafik.
- Skemaændringer: Sørg for, at gatewayen er konfigureret til pålideligt at hente skemaopdateringer fra undergrafer (f.eks. via Apollo Studio eller et lokalt skemaregister).
Hurtigt tjek: Gatewayens rolle
Du har lært om Apollo Gateway og dens rolle i federation.
Opsummering: Det vigtigste om gatewayen
Tillykke! Du har lært om Apollo Gateway, som er en vigtig komponent i GraphQL Federation. Den leverer et samlet API-endpoint til klienter, sammensætter problemfrit skemaer fra forskellige undergrafer og router forespørgsler effektivt.
Ved at konfigurere serviceList bliver din gateway den fælles kilde til sandheden for hele din supergraf. Det forenkler klientinteraktioner og muliggør en robust mikrotjenestearkitektur.
Lær GraphQL-API'er med Spring Boot med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Opsætning og administration af gateway” gratis?
Ja — hele teksten til “Opsætning og administration af gateway” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af GraphQL-API'er med Spring Boot-kurset, skal du opgradere til CoddyKit PRO. GraphQL-API'er med Spring Boot-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Opsætning og administration af gateway”?
Konfigurér og udrul en Apollo Gateway for at sammensætte og eksponere dine federerede subgrafer som én samlet graf. Du øver dig i GraphQL-API'er med Spring Boot med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på GraphQL-API'er med Spring Boot?
Der kræves ingen tidligere erfaring. GraphQL-API'er med Spring Boot på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Opsætning og administration af gateway”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne GraphQL-API'er med Spring Boot-lektion?
Ja. Alle GraphQL-API'er med Spring Boot-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Introduktion til Apollo Federation
- Udvikling af federerede subgrafer
- Opsætning og administration af gateway
- Entity-referencer og @key-direktivet