Bootcamp i backendutveckling med Node.js · Lektion

Implementera en API-gateway

Utforma och konfigurera en API-gateway som fungerar som en gemensam ingång för klientanrop till mikrotjänsterna.

Lektion 3 av 411 steg

Implementera en API-gateway är en gratis lektion i Bootcamp i backendutveckling med Node.js på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Bootcamp i backendutveckling med Node.js, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Bootcamp i backendutveckling med Node.js innehåller totalt 4 lektioner.

API Gateway: huvudingången

I en mikrotjänstarkitektur behöver klienter ofta kommunicera med många olika tjänster. En API Gateway fungerar som en enda, enhetlig ingång för alla klientförfrågningar.

Tänk på den som receptionen på ett stort hotell. I stället för att gästerna själva behöver hitta rätt rum (mikrotjänst) går de till receptionen, som visar dem rätt och hanterar gemensamma ärenden.

Implementera en API-gateway — illustration 1

Varför använda en API Gateway?

API Gateways löser flera utmaningar som uppstår när du använder mikrotjänster:

  • Förenklar klienterna: Klienterna behöver bara känna till en slutpunkt (gatewayen) i stället för många mikrotjänst-URL:er.
  • Dirigering av förfrågningar: Skickar inkommande förfrågningar till rätt backendtjänst.
  • Gemensamma funktioner: Hanterar gemensamma aspekter som autentisering, hastighetsbegränsning och loggning på en enda plats.
  • Tjänsteaggregering: Kan kombinera svar från flera tjänster till ett enda klientsvar i ett lättanvänt format.

Gateway jämfört med lastbalanserare

Det är lätt att blanda ihop en API Gateway med en lastbalanserare, men de har olika syften:

  • Lastbalanserare: Fungerar på nätverkslagret (lager 4) eller applikationslagret (lager 7) för att fördela trafik mellan flera instanser av samma tjänst och uppnå hög tillgänglighet och god prestanda.
  • API Gateway: Fungerar på applikationslagret (lager 7) och fokuserar på API-specifika frågor. Den dirigerar förfrågningar till olika tjänster och kan utföra transformeringar eller säkerhetskontroller.

De arbetar ofta tillsammans, där en lastbalanserare är placerad framför API Gatewayen.

En gateways viktigaste ansvarsområden

En API Gateway har flera viktiga roller:

  • Dirigering av förfrågningar: Koppla specifika API-sökvägar (till exempel /users) till rätt mikrotjänst.
  • Autentisering och auktorisering: Kontrollera användarens identitet och behörigheter innan förfrågningar vidarebefordras.
  • Hastighetsbegränsning: Kontrollera hur många förfrågningar en klient får göra under en viss tidsperiod.
  • Cachning: Lagra data som används ofta för att minska belastningen på backendtjänster och förbättra svarstiderna.
  • Loggning och övervakning: Samla loggar för alla inkommande förfrågningar och utgående svar på en central plats.

Bygga en enkel gateway

Du kan bygga en anpassad API Gateway med Node.js och ramverk som Express.js. Ett populärt bibliotek för att proxiera HTTP-förfrågningar i Express är http-proxy-middleware.

Biblioteket gör det enkelt att vidarebefordra förfrågningar från din gateway till dina backend-mikrotjänster, där gatewayen fungerar som en omvänd proxy.

Grundläggande proxykonfiguration

Vi ska konfigurera en enkel Express.js-server som fungerar som en proxy. Den här gatewayen lyssnar på port 3000 och vidarebefordrar alla förfrågningar som börjar med /api till en simulerad mikrotjänst för ”users” på port 3001.

Kom ihåg att du behöver ha en faktisk mikrotjänst som körs på http://localhost:3001 för full funktionalitet.

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');
});

Routing till flera tjänster

En API-gateway får sin styrka genom möjligheten att routa förfrågningar till olika mikrotjänster baserat på sökvägen, HTTP-metoden eller andra kriterier.

Du kan definiera flera proxyregler där varje regel pekar på en annan backendtjänst. Exempelvis går /users till användartjänsten och /products till produkttjänsten.

Exempel på routing till flera tjänster

Här utökar vi vår gateway så att förfrågningar till /users routas till en ”users-service” på port 3001 och förfrågningar till /products routas till en ”products-service” på port 3002.

Alternativet pathRewrite är viktigt: det tar bort sökvägsprefixet (till exempel /users) innan förfrågan vidarebefordras till måltjänsten.

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');
});

Centraliserad middleware för gatewayen

En av de största fördelarna med en API-gateway är att du kan tillämpa middleware för gemensamma funktioner innan förfrågningarna ens når dina mikrotjänster.

Du kan implementera Express-middlewarefunktioner globalt eller för specifika routes i gatewayen för att hantera uppgifter som:

  • Autentisering: Verifiera JWT:er eller sessionstoken.
  • Loggning: Logga varje inkommande förfrågan.
  • Begränsning av anropsfrekvens: Förhindra missbruk genom att begränsa hur ofta förfrågningar får göras.
  • Indatavalidering: Utför grundläggande validering innan förfrågan vidarebefordras.

Snabbkontroll av gatewayen

En API-gateway är en viktig komponent i en mikrotjänstarkitektur. Nu testar vi din förståelse av dess huvudsakliga syfte.

Sammanfattning av gatewayen

Du har lärt dig om API-gateways, varför de är viktiga i mikrotjänstarkitekturer och hur du implementerar en enkel gateway med Express.js och http-proxy-middleware.

Viktiga punkter:

  • API-gateways förenklar klienternas interaktion genom att tillhandahålla en enda ingångspunkt.
  • De hanterar routing, autentisering, begränsning av anropsfrekvens och andra tvärgående funktioner.
  • Express.js tillsammans med http-proxy-middleware är ett flexibelt sätt att bygga anpassade gateways.

Det är viktigt att behärska API-gateways för att kunna bygga robusta och skalbara mikrotjänstarkitekturer!

Gratis att börja

Lär dig JavaScript med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
22
Lektioner
92

Vanliga frågor

Är lektionen ”Implementera en API-gateway” gratis?

Ja – hela texten till ”Implementera en API-gateway” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Bootcamp i backendutveckling med Node.js, kan Ni uppgradera till CoddyKit PRO. Kursen i Bootcamp i backendutveckling med Node.js innehåller totalt 4 lektioner.

Vad lär jag mig i ”Implementera en API-gateway”?

Utforma och konfigurera en API-gateway som fungerar som en gemensam ingång för klientanrop till mikrotjänsterna. Ni övar på Bootcamp i backendutveckling med Node.js med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Bootcamp i backendutveckling med Node.js?

Du behöver inga förkunskaper. Utbildningen i Bootcamp i backendutveckling med Node.js på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Implementera en API-gateway”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Bootcamp i backendutveckling med Node.js-lektionen?

Ja. Varje Bootcamp i backendutveckling med Node.js-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Introduktion till mikrotjänstarkitektur
  2. Utveckla Node.js-mikrotjänster
  3. Implementera en API-gateway
  4. Kommunikation mellan tjänster med meddelandeköer
← Tillbaka till Bootcamp i backendutveckling med Node.js