What is the difference between Apollo and GraphQL?

Apollo vs GraphQL: Forstå Forskellen

10 måneder ago

Rating: 4.07 (9098 votes)

Mange, der dykker ned i verdenen af moderne API-udvikling, støder på begreberne Apollo og GraphQL. Det er let at forveksle dem eller tro, de er det samme, men de tjener forskellige formål og opererer på forskellige niveauer. For at navigere effektivt i API-landskabet er det essentielt at forstå præcis, hvad hver især er, og hvordan de relaterer sig til hinanden.

What is the difference between Apollo and GraphQL?
GraphQL is the query language and specification created by Facebook (now Meta). It defines a way to request and deliver data through a single endpoint. Apollo is a set of tools that provides a complete implementation stack for API orchestration that also supports the GraphQL specification.

Forestil dig det som at lære et nyt sprog for at bygge noget. GraphQL er sproget – reglerne for, hvordan du spørger efter data. Apollo er værktøjssættet – hammeren, saven og skruetrækkeren – der hjælper dig med at bruge det sprog effektivt til at bygge og administrere din API-struktur.

Hvad er GraphQL?

GraphQL er et forespørgselssprog for din API, oprindeligt skabt af Facebook (nu Meta). Det er ikke en database eller en teknologi til lagring af data; det er en specifikation og en måde at definere, hvordan klienter kan anmode om data fra en server.

Det grundlæggende ved GraphQL er, at det giver klienten magten til at specificere præcis, hvilke data den har brug for. I stedet for at have flere faste endepunkter, som i REST, har en GraphQL API typisk ét enkelt endepunkt. Klienten sender en forespørgsel til dette endepunkt, der beskriver den ønskede datastruktur, og serveren svarer med data i præcis den form.

Dette fører til flere fordele, herunder:

  • Effektivitet: Klienter undgår at hente mere data, end de har brug for (over-fetching), eller at skulle foretage flere anmodninger for at få alle nødvendige data (under-fetching).
  • Fleksibilitet: Det er nemmere at udvikle og ændre klientapplikationer, da de kan tilpasse deres dataforespørgsler uden at kræve ændringer på serverens endepunkter.
  • Stærk typesystem: En GraphQL API har et defineret skema, der beskriver alle mulige data og operationer. Dette giver stærk type-sikkerhed og gør det muligt at validere forespørgsler på forhånd.

Så i sin kerne er GraphQL specifikationen for, hvordan man taler til en API for at få data på en fleksibel og effektiv måde.

Hvad er Apollo?

Hvor GraphQL er sproget og specifikationen, er Apollo et omfattende økosystem af værktøjer, der hjælper dig med at bygge, implementere og skalere API'er, især dem baseret på GraphQL. Apollo leverer en komplet implementeringsstak, der gør det nemmere at bruge og drage fordel af GraphQL.

Apollo's økosystem er designet til at orkestrere API'er, ofte ved at forene flere datakilder (som databaser, REST API'er og andre tjenester) under et enkelt, forenet GraphQL-lag. Dette kaldes ofte en 'graf'.

De vigtigste dele af Apollo økosystemet omfatter:

  • Apollo GraphOS platformen
  • Klient- og server-SDK'er
  • Udviklerværktøjer

Apollo GraphOS: Kernen i platformen

Apollo GraphOS er en platform designet til at oprette, køre og vedligeholde 'federated graphs' af API'er. Federation er en arkitektur, hvor flere separate GraphQL-tjenester (kaldet subgraphs) kombineres til én samlet graf.

Kontrolplanet

Kontrolplanet i GraphOS håndterer administrationen af skemaerne. Det styrer både de individuelle GraphQL-skemaer for hver API og det sammensatte skema, der forener dem til én enkelt graf. Værktøjer her garanterer konsistente API-brugsmønstre på tværs af applikationer gennem centraliseret skemahåndhævelse og adgangspolitikker. Kontrolplanet tilbyder også indsigt for at analysere grafens brug og ydeevne.

Køretidsmiljøet (Runtime)

Køretidsmiljøet betjener klientanmodninger. En central del er det forenede endepunkt, det præsenterer for klienterne. Apollo Routeren er dette enkeltstående indgangspunkt.

Routeren bruger en indbygget forespørgselsplanlægger til at distribuere anmodninger til de relevante API'er og returnerer et samlet svar. Fordi den er integreret med GraphOS, får routeren automatisk et valideret sammensat skema fra GraphOS, når de underliggende API'ers skemaer opdateres.

What is yoga GraphQL?
GraphQL Yoga is a batteries-included cross-platform GraphQL over HTTP spec-compliant GraphQL server powered by Envelop and GraphQL Tools that runs anywhere; focused on easy setup, performance and great developer experience.20. mar. 2025

Apollo Federation

Routerens evne til at arbejde med flere API'er og koordinere mellem dem drives af Apollo Federation. Denne forenede grafarkitektur gør det muligt for routeren at præsentere en enkelt sammenhængende API for klienter, samtidig med at den orkestrerer anmodninger på tværs af flere API'er bag kulisserne.

Apollo Connectors

Apollo Connectors lader dig tilslutte dine eksisterende REST API'er direkte og deklarativt til din graf. De er bygget på Apollo Federation og udvider de samme orkestreringsmuligheder til REST API'er, som Federation allerede tilbyder for GraphQL API'er.

Bruger- og programmerbare grænseflader

GraphOS tilbyder flere grænseflader til at imødekomme organisationers behov:

  • GraphOS Studio: Den primære webgrænseflade til GraphOS, hvor du kan oprette supergraphs, se skemaer og metrics, og teste operationer.
  • Rover CLI: Det primære kommandolinjeværktøj til GraphOS, brugt til at publicere subgraph skemaer, køre skematjek og teste din graf lokalt.
  • GraphOS Platform API: Til automatisering af DevOps-workflows og pipelines uden for Studio eller Rover.

Det bredere Apollo økosystem: Klienter, Server og Værktøjer

Ud over GraphOS inkluderer Apollo's økosystem flere nøglekomponenter:

  • Apollo Client SDK'er: Biblioteker til at forbruge GraphQL API'er fra forskellige frontend-platforme. Dette inkluderer Apollo Client til web (specielt React), Apollo iOS til native iOS (Swift) og Apollo Kotlin til Android/JVM/Kotlin. Disse sikrer konsistente GraphQL-oplevelser på tværs af teknologier.
  • Apollo Server: En open source, specifikationskompatibel GraphQL Server. Det er en produktionsklar løsning til at bygge GraphQL API'er, der kan bruge data fra enhver kilde (databaser, REST API'er, tredjeparts tjenester).
  • Udviklerværktøjer: Værktøjer som Apollo Language Server forbedrer udvikleroplevelsen i IDE'er (som VS Code, JetBrains) med funktioner som syntaksfremhævning, validering, autocompletion og skemanavigation.

Apollo vs GraphQL: Den Klare Forskel

Her er en opsummering af hovedforskellen:

GraphQLApollo
Et forespørgselssprog og en specifikation.Et økosystem af værktøjer, der implementerer og gør det nemmere at bruge GraphQL.
Definerer, hvordan du beder om data.Giver værktøjerne til at bygge og administrere en API, der bruger GraphQL.
Selve "sprog"-reglerne."Værktøjskassen" til at tale sproget og bygge systemer med det.
Fokuserer på klient-server kommunikation via et skema.Fokuserer på den fulde API-livscyklus: bygning af servere, håndtering af skemaer, orkestrering af datakilder, bygning af klienter, og overvågning.

I bund og grund er GraphQL fundamentet – definitionen af sproget. Apollo er et sæt avancerede værktøjer, der bygger ovenpå dette fundament for at give en komplet løsning til at arbejde med GraphQL i stor skala, især i komplekse, distribuerede systemer.

Hvad de IKKE er

Det er også vigtigt at afklare, hvad hverken GraphQL eller Apollo er:

  • GraphQL er ikke en grafdatabase: Selvom navnet indeholder "graf", og GraphQL API'er ofte omtales som grafer, er GraphQL ikke en database. Det kan hente data fra enhver kilde – relationelle databaser, NoSQL-databaser, REST API'er osv.
  • GraphQL er ikke en erstatning for REST:GraphQL og REST er komplementære teknologier. GraphQL kan fungere som et abstraktionslag, der forbedrer eksisterende REST API'er ved at give en forenet grænseflade. Apollo Connectors er et eksempel på dette, hvor de integrerer REST-endepunkter i en GraphQL-graf.

Apollo Server vs. GraphQL Server

Dette er et specifikt punkt, der kan skabe forvirring. GraphQL Server refererer til enhver serverimplementering, der overholder GraphQL-specifikationen og kan modtage og behandle GraphQL-forespørgsler.

Apollo Server er en *specifik* implementering af en GraphQL Server. Det er et populært open source JavaScript-bibliotek, der giver en robust og funktionsrig måde at opbygge en server-side GraphQL API på. Det er en del af det større Apollo økosystem, men du kan bruge andre GraphQL Server-implementeringer, der ikke er en del af Apollo.

Ofte Stillede Spørgsmål

Er Apollo nødvendigt for at bruge GraphQL?

Nej. Du kan implementere en GraphQL Server og bruge GraphQL-forespørgsler med klienter uden at bruge Apollo-værktøjerne. Apollo tilbyder dog et omfattende økosystem, der gør det markant nemmere og mere effektivt at bygge, skalere og administrere GraphQL-baserede API'er, især i større eller mere komplekse applikationer.

Kan GraphQL erstatte mine eksisterende REST API'er?

Ikke nødvendigvis en direkte erstatning, men snarere en komplementær teknologi. Du kan placere et GraphQL-lag oven på dine eksisterende REST API'er for at give klienter en mere fleksibel og effektiv måde at hente data på. Apollo Connectors er specifikt designet til at hjælpe med denne integration.

Er GraphQL en database?

Nej, GraphQL er ikke en database. Det er et forespørgselssprog til API'er, der kan hente data fra enhver datakilde, herunder databaser (relationelle, NoSQL osv.) og andre tjenester.

Hvad er fordelene ved at bruge Apollo med GraphQL?

Apollo tilbyder en komplet stak, der forenkler implementeringen og brugen af GraphQL. Fordele inkluderer værktøjer til skemahåndtering (GraphOS), effektiv datahentning (Apollo Router, Federation), nem integration med forskellige datakilder (Connectors), robuste klientbiblioteker og nyttige udviklerværktøjer.

Konklusion

At forstå forskellen mellem GraphQL og Apollo er afgørende for enhver, der arbejder med moderne API'er. GraphQL er det kraftfulde sprog og specifikationen for effektiv datahentning, mens Apollo er det omfattende økosystem af værktøjer, der gør det muligt at implementere, skalere og orkestrere API'er, der bruger GraphQL. Sammen udgør de et fundament for at bygge fleksible og ydeevneoptimerede API-strukturer.

Kunne du lide 'Apollo vs GraphQL: Forstå Forskellen'? Så tag et kig på flere artikler i kategorien Fitness.

Go up