Bygge en GraphQL-server med Apollo
Implementer et GraphQL-API i Node.js med Apollo Server, koble det til datakildene dine og definer resolvere.
Bygge en GraphQL-server med Apollo er en gratis leksjon i Bootcamp i backendutvikling med Node.js på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Bootcamp i backendutvikling med Node.js, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Bootcamp i backendutvikling med Node.js inneholder totalt 4 leksjoner.
Møt Apollo Server
Velkommen til bygging av en GraphQL-server! Vi skal bruke Apollo Server, et populært bibliotek med åpen kildekode som hjelper Dem med å implementere et produksjonsklart GraphQL-API i Node.js.
- Det er enkelt å sette opp.
- Det kan integreres med mange Node.js-rammeverk, for eksempel Express.
- Det tilbyr kraftige verktøy som GraphQL Playground for testing.
Apollo Server håndterer det meste av det krevende arbeidet, slik at De kan konsentrere Dem om dataene.

Prosjektoppsett for Apollo
La oss komme i gang ved å sette opp prosjektet. Åpne terminalen og kjør disse kommandoene for å opprette et nytt Node.js-prosjekt og installere de nødvendige bibliotekene:
apollo-server: Kjerne biblioteket for å bygge GraphQL-serveren vår.graphql: JavaScript-implementasjonen av GraphQL-spesifikasjonen.
Slik gjør De det:
mkdir my-graphql-api
cd my-graphql-api
npm init -y
npm install apollo-server graphql
Når installasjonen er ferdig, er De klare til å skrive kode!
Skjema og resolvere: kjernen
En GraphQL-server har to hoveddeler:
- Skjema (typedefinisjoner): Dette definerer formen på dataene og operasjonene klientene kan utføre (spørringer og mutasjoner). Tenk på det som kontrakten mellom klienten og serveren.
- Resolvere: Dette er funksjoner som forteller GraphQL hvordan dataene for hver type og hvert felt i skjemaet skal hentes. De utgjør «backend-logikken» for API-et.
Sammen definerer de API-ets funksjonalitet og hvordan det samhandler med dataene Deres.
Utforme GraphQL-skjemaet
Vi definerer skjemaet ved hjelp av en spesiell template literal-tag kalt gql (fra apollo-server). Dette lar oss skrive GraphQL Schema Definition Language (SDL).
Den viktigste typen er Query, som definerer alle måtene klientene kan lese data fra API-et Deres på. La oss definere en enkel Query som returnerer en «hello»-melding.
const { gql } = require('apollo-server');
const typeDefs = gql`
type Query {
hello: String
}
`;
console.log('Your schema is ready!');Bygge resolverne
Nå som vi har skjemaet, må vi fortelle GraphQL hvordan dataene for feltet hello faktisk skal hentes. Det er her resolvere kommer inn.
Resolvere er funksjoner som samsvarer med feltene i skjemaet. Når en klient spør etter hello, blir den tilhørende resolverfunksjonen kjørt.
const resolvers = {
Query: {
hello: () => 'Hello from your GraphQL API!',
},
};
console.log('Resolvers are defined!');Starte den første serveren
La oss sette alt sammen! Vi kombinerer typeDefs og resolvers med ApolloServer for å opprette en komplett og kjørbar GraphQL-server.
Opprett en fil med navnet index.js og legg til følgende kode. Kjør den deretter med node index.js.
const { ApolloServer, gql } = require('apollo-server');
// 1. Define your schema (type definitions)
const typeDefs = gql`
type Query {
hello: String
}
`;
// 2. Define your resolvers (how to fetch data)
const resolvers = {
Query: {
hello: () => 'Hello from your GraphQL API!',
},
};
// 3. Create an Apollo Server instance
const server = new ApolloServer({ typeDefs, resolvers });
// 4. Start the server
server.listen({ port: 4000 }).then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
console.log('Try opening your browser to test it!');
});Definere egendefinerte datatyper
En enkel «hello» er ikke særlig spennende. La oss definere en egendefinert type, for eksempel Book, med egne felter. Dette viser hvordan De strukturerer mer komplekse data.
Oppdater typeDefs slik at den inkluderer typen Book og en books-spørring som returnerer en liste over slike objekter.
const { gql } = require('apollo-server');
const typeDefs = gql`
type Book {
title: String
author: String
}
type Query {
hello: String
books: [Book]
}
`;
console.log('Schema updated with Book type!');Resolvere egendefinerte typer
For at books-spørringen skal fungere, må vi oppdatere resolverne. Foreløpig bruker vi en array med objekter i minnet for å simulere en database. I virkelige applikasjoner kobler resolverne seg til databaser eller andre API-er.
La oss oppdatere resolvers slik at de leverer data til books-spørringen.
const books = [
{
title: 'The Great Gatsby',
author: 'F. Scott Fitzgerald',
},
{
title: 'To Kill a Mockingbird',
author: 'Harper Lee',
},
];
const resolvers = {
Query: {
hello: () => 'Hello from your GraphQL API!',
books: () => books,
},
};
console.log('Resolvers updated for books!');Komplett API med bøker
Her er den komplette index.js-filen med den nye Book-typen og resolveren til den. Kjør den med node index.js.
Når serveren kjører, åpner De URL-en i nettleseren (f.eks. http://localhost:4000). Da ser De GraphQL Playground, der De kan teste spørringer som:
query {
books {
title
author
}
}
const { ApolloServer, gql } = require('apollo-server');
const typeDefs = gql`
type Book {
title: String
author: String
}
type Query {
hello: String
books: [Book]
}
`;
const books = [
{
title: 'The Great Gatsby',
author: 'F. Scott Fitzgerald',
},
{
title: 'To Kill a Mockingbird',
author: 'Harper Lee',
},
];
const resolvers = {
Query: {
hello: () => 'Hello from your GraphQL API!',
books: () => books,
},
};
const server = new ApolloServer({ typeDefs, resolvers });
server.listen({ port: 4000 }).then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
console.log('Explore your API in GraphQL Playground!');
});Kontroll av skjema kontra resolvere
De har lært om de to grunnleggende delene av en GraphQL-server: skjemaet (typedefinisjonene) og resolverne.
Hvilket av følgende beskriver best hovedrollen til GraphQL-resolvere i en Apollo Server?
Apollo Server: Rask oppsummering
Godt jobbet! De har bygget sin første GraphQL-server med Apollo Server.
- Vi installerte
apollo-serveroggraphql. - Vi definerte API-ets struktur ved hjelp av typedefinisjoner (
typeDefs) skrevet i GraphQL SDL. - Vi implementerte resolvere for å angi hvordan dataene for feltene i skjemaet skulle hentes, ved hjelp av eksempeldata.
- Vi startet serveren med
ApolloServerog utforsket den med GraphQL Playground.
Dette er grunnlaget for å bygge kraftige og fleksible GraphQL-API-er. Deretter kan De utforske mutasjoner, argumenter og tilkobling til virkelige databaser!
Lær deg JavaScript med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 22
- Leksjoner
- 92
Ofte stilte spørsmål
Er leksjonen «Bygge en GraphQL-server med Apollo» gratis?
Ja – hele teksten i «Bygge en GraphQL-server med Apollo» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Bootcamp i backendutvikling med Node.js-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Bootcamp i backendutvikling med Node.js inneholder totalt 4 leksjoner.
Hva lærer jeg i «Bygge en GraphQL-server med Apollo»?
Implementer et GraphQL-API i Node.js med Apollo Server, koble det til datakildene dine og definer resolvere. Du øver på Bootcamp i backendutvikling med Node.js med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Bootcamp i backendutvikling med Node.js?
Ingen tidligere erfaring er nødvendig. Bootcamp i backendutvikling med Node.js på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Bygge en GraphQL-server med Apollo»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Bootcamp i backendutvikling med Node.js-leksjonen?
Ja. Alle Bootcamp i backendutvikling med Node.js-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Introduksjon til serverless med Node.js
- Prinsipper for GraphQL API-design
- Bygge en GraphQL-server med Apollo
- GraphQL-abonnementer for sanntidsdata