Node.js
API gateway
API gateway desenini öğrenirsin.
API gateway
Bir API gateway, istemci isteklerini alan ve uygun servislere yönlendiren tek giriş noktasıdır. İstemci yalnızca gateway'e bağlanır; gateway arkadaki servisleri çağırır. Bu, istemcilerin servis sayısını bilmemesini sağlar.
Örnek: istemci GET /api/users/1 isteğini gateway'e atar. Gateway bu isteği user-servisine yönlendirir. Gateway ayrıca kimlik doğrulama, hız sınırı (rate limit) ve yanıt birleştirme yapabilir. Avantajları: tek giriş noktası, ortak işlerin merkezi yapılması, istemci-servis ayrımı. Dezavantajları: ek bir ağ sıçraması, gateway'in yüksek erişilir olması gerekir. API gateway, mikrohizmet sistemlerinin neredeyse ayrılmaz bir parçasıdır.
Gateway ile routing
Gateway, URL yoluna göre istekleri servislere dağıtır. Örneğin /api/users/* user-servisine, /api/orders/* sipariş servisine gider. Express'te bunu app.use ile yaparsın.
Örnek: app.use("/api/users", userRouter); app.use("/api/orders", orderRouter);. /api/users ile başlayan tüm istekler userRouter'a gider. Gateway, her servis için bir router tutar. Router, isteği alıp ilgili servise iletir (genellikle fetch ile). Bu yapı, istemcinin yalnızca tek bir adrese (gateway) bağlanmasını sağlar. Servislerin konumu değiştiğinde yalnızca gateway'in routing tablosu güncellenir; istemci etkilenmez.
Uygulama API gateway iskeletini yaz
express modülünü içe aktar ve app oluştur. app.use("/api/users", (req, res) => res.json({ kaynak: "user-service" })) ile gateway routing tanımla. console.log ile "Gateway hazır" yaz.
Örnek çözümü göster
const express = require("express");
const app = express();
app.use("/api/users", (req, res) => res.json({ kaynak: "user-service" }));
console.log("Gateway hazır");
Kendini test et
-
Kavramı rolüne eşle
- API gateway
- Tek giriş noktası
- user-service
- Kullanıcı verisini tutar
- rate limit
- İstek sayısını sınırlar
- routing
- İsteği servise yönlendirir
-
Gateway hangi yolu user-servisine yönlendirir?
app.use("/api/users", userRouter)
- /api/orders
- /api/payments
- /api/health
- /api/users
Cevabı göster
/api/users — /api/users userRouter'a gider.
-
app.use çağrısını tamamla
app.use("/api/users", ____);
Cevabı göster
app.use("/api/users", userRouter);
Sıradaki ders: Service discovery