Implementering af en API Gateway
Design og opsæt en API Gateway, der fungerer som ét indgangspunkt for klientforespørgsler til jeres mikrotjenester.
Implementering af en API Gateway er en gratis Bootcamp i backendudvikling med Node.js-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 Bootcamp i backendudvikling med Node.js, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Bootcamp i backendudvikling med Node.js-kurset indeholder 4 lektioner i alt.
API Gateway: Hovedindgangen
I en mikrotjenestearkitektur skal klienter ofte interagere med mange forskellige tjenester. En API Gateway fungerer som et enkelt, samlet indgangspunkt for alle klientforespørgsler.
Tænk på den som receptionen på et stort hotel. I stedet for selv at skulle finde bestemte værelser (mikrotjenester) går gæsterne til receptionen, som viser dem det rigtige sted hen og håndterer almindelige forespørgsler.

Hvorfor bruge en API Gateway?
API Gateways løser flere udfordringer, der opstår ved brug af mikrotjenester:
- Forenkler klienter: Klienter behøver kun at kende ét slutpunkt (gatewayen) i stedet for mange URL'er til mikrotjenester.
- Routing af forespørgsler: Sender indgående forespørgsler til den korrekte backend-tjeneste.
- Fælles ansvarsområder: Håndterer tværgående forhold som godkendelse, begrænsning af forespørgselshastighed og logning ét sted.
- Samling af tjenester: Kan kombinere svar fra flere tjenester til ét klもientvenligt svar.
Gateway kontra belastningsfordeler
Det er nemt at forveksle en API Gateway med en belastningsfordeler, men de har forskellige formål:
- Belastningsfordeler: Fungerer på netværkslaget (lag 4) eller applikationslaget (lag 7) for at fordele trafik på flere instanser af den samme tjeneste med henblik på høj tilgængelighed og ydeevne.
- API Gateway: Fungerer på applikationslaget (lag 7) og fokuserer på API-specifikke forhold. Den sender forespørgsler til forskellige tjenester og kan udføre transformationer eller sikkerhedstjek.
De arbejder ofte sammen, hvor en belastningsfordeler placeres foran API Gatewayen.
En gateways vigtigste ansvarsområder
En API Gateway varetager flere vigtige roller:
- Routing af forespørgsler: Knytter bestemte API-stier (f.eks.
/users) til den relevante mikrotjeneste. - Godkendelse og autorisation: Bekræfter brugerens identitet og tilladelser, før forespørgsler videresendes.
- Begrænsning af forespørgselshastighed: Begrænser antallet af forespørgsler, en klient kan sende inden for et bestemt tidsrum.
- H603caching: Gemmer data, der ofte hentes, for at reducere belastningen på backend-tjenester og forbedre svartiderne.
- Logning og overvågning: Samler logge for alle indgående forespørgsler og udgående svar ét sted.
Bygning af en enkel gateway
Du kan bygge en brugerdefineret API Gateway ved hjælp af Node.js og rammer som Express.js. Et populært bibliotek til proxying af HTTP-forespørgsler i Express er http-proxy-middleware.
Dette bibliotek gør det nemt at videresende forespørgsler fra din gateway til dine backend-mikrotjenester, hvor den fungerer som en reverse proxy.
Grundlæggende proxyopsætning
Lad os sætte en enkel Express.js-server op, der fungerer som en proxy. Denne gateway lytter på port 3000 og videresender alle forespørgsler, der starter med /api, til en simuleret 'users'-mikrotjeneste på port 3001.
Husk, at du skal have en faktisk mikrotjeneste kørende på http://localhost:3001 for at få den fulde 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 til flere tjenester
En API-gateways styrke kommer fra dens evne til at route forespørgsler til forskellige mikrotjenester baseret på forespørgslens sti, HTTP-metode eller andre kriterier.
Du kan definere flere proxyregler, som hver peger på en forskellig backend-tjeneste. For eksempel sendes /users til brugertjenesten, mens /products sendes til produkttjenesten.
Eksempel på routing til flere tjenester
Her udvider vi vores gateway, så forespørgsler til /users routes til en 'users-service' på port 3001, og forespørgsler til /products routes til en 'products-service' på port 3002.
Indstillingen pathRewrite er vigtig: Den fjerner sti-præfikset (for eksempel /users), før forespørgslen 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');
});Centraliseret middleware til gatewayen
En af de største fordele ved en API-gateway er, at du kan anvende middleware til fælles opgaver, før forespørgslerne overhovedet når dine mikrotjenester.
Du kan implementere Express-middlewarefunktioner globalt eller for bestemte ruter i din gateway for at håndtere opgaver som:
- Godkendelse: Kontrollér JWT'er eller sessionstokens.
- Logning: Log hver indkommende forespørgsel.
- Hastighedsbegrænsning: Forebyg misbrug ved at begrænse forespørgslers hyppighed.
- Validering af input: Udfør grundlæggende validering før videresendelse.
Hurtigt tjek af gatewayen
En API-gateway er en vigtig komponent i en mikrotjenestearkitektur. Lad os teste din forståelse af dens primære formål.
Opsummering af gatewayen
Du har lært om API-gateways, deres betydning i mikrotjenester, og hvordan du implementerer en grundlæggende gateway ved hjælp af Express.js og http-proxy-middleware.
Det vigtigste:
- API-gateways forenkler klienters kommunikation ved at tilbyde ét indgangspunkt.
- De håndterer routing, godkendelse, hastighedsbegrænsning og andre tværgående opgaver.
- Express.js sammen med
http-proxy-middlewareer en fleksibel måde at bygge tilpassede gateways på.
Det er vigtigt at beherske API-gateways, når du skal bygge robuste og skalerbare mikrotjenester!
Lær JavaScript 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
- 22
- Lektioner
- 92
Ofte stillede spørgsmål
Er lektionen “Implementering af en API Gateway” gratis?
Ja — hele teksten til “Implementering af en API 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 Bootcamp i backendudvikling med Node.js-kurset, skal du opgradere til CoddyKit PRO. Bootcamp i backendudvikling med Node.js-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Implementering af en API Gateway”?
Design og opsæt en API Gateway, der fungerer som ét indgangspunkt for klientforespørgsler til jeres mikrotjenester. Du øver dig i Bootcamp i backendudvikling med Node.js 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å Bootcamp i backendudvikling med Node.js?
Der kræves ingen tidligere erfaring. Bootcamp i backendudvikling med Node.js 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 “Implementering af en API 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 Bootcamp i backendudvikling med Node.js-lektion?
Ja. Alle Bootcamp i backendudvikling med Node.js-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
- Introduktion til mikroservicearkitektur
- Udvikling af Node.js-mikrotjenester
- Implementering af en API Gateway
- Kommunikation mellem services med message queues