GraphQL-API'er med Spring Boot · Lektion

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.

Lektion 3 af 412 trin

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:

  1. Gatewayen modtager forespørgslen.
  2. Den analyserer forespørgslen i forhold til det sammensatte supergraf-skema.
  3. Den opdeler forespørgslen i mindre dele og afgør, hvilken undergraf der ejer hvert stykke data.
  4. Den sender underforespørgsler til de relevante undergrafer.
  5. 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-server

Opret 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.js

Konsollen 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.

Gratis at komme i gang

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

  1. Introduktion til Apollo Federation
  2. Udvikling af federerede subgrafer
  3. Opsætning og administration af gateway
  4. Entity-referencer og @key-direktivet
← Tilbage til GraphQL-API'er med Spring Boot