Bootcamp i backendutvikling med Node.js · leksjon

Implementere en API Gateway

Utform og sett opp en API Gateway som ett enkelt inngangspunkt for klientforespørsler til mikrotjenestene dine.

Leksjon 3 av 411 trinn

Implementere en API Gateway 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.

API Gateway: Inngangsdøren

I en mikrotjenestearkitektur trenger klienter ofte å kommunisere med mange ulike tjenester. En API Gateway fungerer som ett samlet inngangspunkt for alle klientforespørsler.

Tenk på den som resepsjonen på et stort hotell. I stedet for at gjestene må finne de bestemte rommene (mikrotjenestene) selv, går de til resepsjonen, som viser dem til riktig sted og håndterer vanlige forespørsler.

Implementere en API Gateway — illustrasjon 1

Hvorfor bruke en API Gateway?

API Gateways løser flere utfordringer som oppstår ved bruk av mikrotjenester:

  • Forenkler klientene: Klientene trenger bare å kjenne til ett endepunkt (gatewayen) i stedet for mange mikrotjeneste-URL-er.
  • Ruting av forespørsler: Sender innkommende forespørsler til riktig backend-tjeneste.
  • Felles ansvarsområder: Håndterer tverrgående oppgaver som autentisering, hastighetsbegrensning og logging på ett sted.
  • Tjenesteaggregering: Kan kombinere svar fra flere tjenester til ett svar som er tilpasset klienten.

Gateway kontra lastbalanserer

Det er lett å forveksle en API Gateway med en lastbalanserer, men de har ulike formål:

  • Lastbalanserer: Opererer på nettverkslaget (lag 4) eller applikasjonslaget (lag 7) for å fordele trafikk mellom flere instanser av den samme tjenesten for høy tilgjengelighet og god ytelse.
  • API Gateway: Opererer på applikasjonslaget (lag 7) og fokuserer på API-spesifikke oppgaver. Den ruter forespørsler til ulike tjenester og kan utføre transformasjoner eller sikkerhetskontroller.

De brukes ofte sammen, med en lastbalanserer foran API Gatewayen.

Viktige ansvarsområder for en gateway

En API Gateway har flere viktige roller:

  • Ruting av forespørsler: Kobler bestemte API-stier (f.eks. /users) til riktig mikrotjeneste.
  • Autentisering og autorisering: Kontrollerer brukerens identitet og tillatelser før forespørsler videresendes.
  • Hastighetsbegrensning: Kontrollerer hvor mange forespørsler en klient kan sende innenfor et bestemt tidsrom.
  • Bufring: Lagrer data som hentes ofte, for å redusere belastningen på backend-tjenestene og forbedre svartidene.
  • Logging og overvåking: Samler logger for alle innkommende forespørsler og utgående svar på ett sted.

Bygging av en enkel gateway

Du kan bygge en egendefinert API Gateway med Node.js og rammeverk som Express.js. Et populært bibliotek for proxying av HTTP-forespørsler i Express er http-proxy-middleware.

Dette biblioteket gjør det enkelt å videresende forespørsler fra gatewayen til backend-mikrotjenestene dine, slik at gatewayen fungerer som en reverse proxy.

Grunnleggende proxyoppsett

La oss sette opp en enkel Express.js-server som fungerer som en proxy. Denne gatewayen lytter på port 3000 og videresender alle forespørsler som begynner med /api til en simulert «users»-mikrotjeneste på port 3001.

Husk at du trenger en faktisk mikrotjeneste som kjører på http://localhost:3001 for full funksjonalitet.

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();
const GATEWAY_PORT = 3000;

// Proxy all requests starting with /api to the users microservice
app.use(
  '/api',
  createProxyMiddleware({
    target: 'http://localhost:3001', // Target URL of your users microservice
    changeOrigin: true, // Needed for virtual hosted sites
    logLevel: 'debug' // Optional: for seeing proxy activity in console
  })
);

// Simple root route for gateway status
app.get('/', (req, res) => {
  res.send('API Gateway is running. Try /api/users (if microservice is active).');
});

app.listen(GATEWAY_PORT, () => {
  console.log(`API Gateway listening on port ${GATEWAY_PORT}`);
  console.log('Proxying /api to http://localhost:3001');
});

Ruting til flere tjenester

En API Gateway er kraftig fordi den kan rute forespørsler til ulike mikrotjenester basert på forespørselsbanen, HTTP-metoden eller andre kriterier.

Du kan definere flere proxyregler, der hver regel peker til en annen backend-tjeneste. For eksempel går /users til brukertjenesten, mens /products går til produkttjenesten.

Eksempel på ruting til flere tjenester

Her utvider vi gatewayen slik at forespørsler til /users rutes til en «users-service» på port 3001, mens forespørsler til /products rutes til en «products-service» på port 3002.

Alternativet pathRewrite er viktig: Det fjerner prefikset i banen (for eksempel /users) før forespørselen videresendes til måltjenesten.

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();
const GATEWAY_PORT = 3000;

// Proxy for user-related requests
app.use(
  '/users',
  createProxyMiddleware({
    target: 'http://localhost:3001', // Users Microservice URL
    changeOrigin: true,
    pathRewrite: { '^/users': '' }, // Remove /users prefix
    logLevel: 'debug'
  })
);

// Proxy for product-related requests
app.use(
  '/products',
  createProxyMiddleware({
    target: 'http://localhost:3002', // Products Microservice URL
    changeOrigin: true,
    pathRewrite: { '^/products': '' }, // Remove /products prefix
    logLevel: 'debug'
  })
);

app.get('/', (req, res) => {
  res.send('API Gateway is running. Try /users or /products (if microservices are active).');
});

app.listen(GATEWAY_PORT, () => {
  console.log(`API Gateway listening on port ${GATEWAY_PORT}`);
  console.log('Proxying /users to http://localhost:3001');
  console.log('Proxying /products to http://localhost:3002');
});

Sentralisert mellomvare for gatewayen

En av de største fordelene med en API Gateway er at du kan bruke mellomvare for felles funksjonalitet før forespørsler når mikrotjenestene dine.

Du kan implementere Express-mellomvarefunksjoner globalt eller for bestemte ruter i gatewayen for å håndtere oppgaver som:

  • Autentisering: Bekrefte JWT-er eller øktstokener.
  • Logging: Logge hver innkommende forespørsel.
  • Frekvensbegrensning: Forhindre misbruk ved å begrense hvor ofte forespørsler kan sendes.
  • Validering av inndata: Grunnleggende validering før videresending.

Kort kontroll av gatewayen

En API Gateway er en viktig komponent i et mikrotjenesteoppsett. La oss teste forståelsen din av hovedformålet.

Sammendrag av gatewayen

Du har lært om API Gateways, hvorfor de er viktige i mikrotjenester, og hvordan du implementerer en enkel gateway med Express.js og http-proxy-middleware.

Viktigste punkter:

  • API Gateways forenkler samhandlingen med klienter ved å tilby ett enkelt inngangspunkt.
  • De håndterer ruting, autentisering, frekvensbegrensning og andre tverrgående hensyn.
  • Express.js med http-proxy-middleware er en fleksibel måte å bygge egendefinerte gateways på.

Det er viktig å beherske API Gateways for å kunne bygge robuste og skalerbare mikrotjenester!

Gratis å komme i gang

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 «Implementere en API Gateway» gratis?

Ja – hele teksten i «Implementere en API Gateway» 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 «Implementere en API Gateway»?

Utform og sett opp en API Gateway som ett enkelt inngangspunkt for klientforespørsler til mikrotjenestene dine. 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 «Implementere en API Gateway»?

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

  1. Introduksjon til mikrotjenestearkitektur
  2. Utvikle Node.js-mikrotjenester
  3. Implementere en API Gateway
  4. Kommunikasjon mellom tjenester med meldingskøer
← Tilbake til Bootcamp i backendutvikling med Node.js