Middleware
- Türkçe karşılığı
- ara yazılım, ara katman yazılımı
- Okunuşu
- midılver
Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.
Kısaca
Middleware, bir sistemin iki katmanı arasında duran yazılımdır; bir web sunucusunda çoğunlukla gelen istek ile son yanıt arasında çalışan koddur.
Middleware nedir?
Middleware, diğer yazılım parçalarını birbirine bağlayan ya da aralarında duran yazılımlar için kullanılan genel bir terimdir. Backend web geliştirmede genellikle bir isteğin işlenmesi sırasında araya giren fonksiyon anlamına gelir: sunucu isteği aldıktan sonra, son yanıtı üreten route handler'dan önce çalışır.
Middleware fonksiyonları bir boru hattı (pipeline) halinde zincirlenir. Her biri isteği okuyabilir ya da değiştirebilir, yanıta bir şey ekleyebilir, isteği erken durdurabilir (örneğin 401 Unauthorized döndürerek) veya kontrolü çoğunlukla next() çağırarak bir sonraki fonksiyona devredebilir. Express, Koa, ASP.NET Core, Django ve Next.js gibi web framework'lerinin hepsi bu kalıbı kullanır.
Havalimanı güvenliğini düşünün: kapınıza varmadan önce bilet kontrolünden, güvenlik taramasından ve pasaport kontrolünden geçersiniz ve bunlardan herhangi biri sizi durdurabilir. Middleware da aynı şekilde kesitsel ilgiler (cross-cutting concerns) için, yani loglama, kimlik doğrulama, JSON gövdelerini ayrıştırma, sıkıştırma, rate limiting ve CORS başlıkları gibi birçok route'un ortak kullandığı görevler için kullanılır.
Bu sözcüğün kurumsal yazılımda daha eski ve daha geniş bir anlamı da vardır; orada middleware, ayrı uygulamaları birbirine bağlayan mesaj aracıları (message broker), uygulama sunucuları ve entegrasyon platformları gibi sistemleri ifade eder. İki anlam da aynı fikri paylaşır: ortada duran ve iki yandaki parçaların yapmak zorunda kalmayacağı ortak işleri üstlenen bir katman.
Önemli noktalar
- Middleware, isteğin alınması ile yanıtın gönderilmesi arasında çalışır.
- Birden fazla middleware fonksiyonu sırayla çalışan bir zincir oluşturur.
- Her biri isteği değiştirebilir, erken sonlandırabilir ya da bir sonrakine aktarabilir.
- Yaygın kullanım alanları loglama, kimlik doğrulama, gövde ayrıştırma, CORS ve rate limiting'dir.
Örnek
// Log every request, then hand it to the next function in the chain
function logRequests(req, res, next) {
console.log(`${req.method} ${req.url}`);
next();
}
app.use(logRequests); // runs for every request
app.use(express.json()); // built-in middleware that parses JSON bodies
app.get("/hello", (req, res) => {
res.send("Hello!");
});Sık sorulan sorular
Middleware'de next() ne yapar?
Express gibi framework'lerde next() çağırmak, isteği zincirdeki bir sonraki middleware'e ya da route handler'a devreder. Bir middleware ne next() çağırır ne de yanıt gönderirse istek askıda kalır.
Middleware ile API aynı şey midir?
Hayır. API, istemcilerin çağırdığı arayüzdür; middleware ise istekler o API'yi uygulayan koda giderken onları işleyen dahili koddur.
Middleware'lerin sırası önemli midir?
Evet. Middleware'ler kaydedildikleri sırayla çalışır; bu nedenle gövde ayrıştırıcı, istek gövdesini okuyan herhangi bir handler'dan önce çalışmalı, kimlik doğrulama da korumalı route'lardan önce çalışmalıdır.
İlgili sayfalar
- APIBackend ve API'ler, s. 2API, bir yazılımın başka bir yazılımdan veri ya da işlem talep etmesini sağlayan, belgelenmiş ve öngörülebilir kurallar bütünüdür.
- HTTPWeb Geliştirme, s. 20HTTP, tarayıcıların, uygulamaların ve sunucuların basit bir istek-yanıt döngüsüyle web sayfaları ve veri alışverişi yapmasını sağlayan protokoldür.
- FonksiyonProgramlamanın Temelleri, s. 20Fonksiyon, belirli bir işi yapan, isteğe bağlı olarak parametre denen girdiler alıp sonuç döndürebilen, adlandırılmış ve yeniden kullanılabilir kod bloğudur.
- FrameworkProgramlamanın Temelleri, s. 22Framework, bir uygulamanın yapısını sağlayan, yeniden kullanılabilir kod, araç ve kural temelidir; geliştiriciler yalnızca kendi mantıklarını doldurur.
- CORSWeb Geliştirme, s. 9CORS, bir sunucunun JavaScript'ten istek yapan hangi diğer sitelerin yanıtlarını okuyabileceğini bildirmesini sağlayan tarayıcı güvenlik mekanizmasıdır.
- EndpointBackend ve API'ler, s. 11Endpoint, bir API'nin belirli bir kaynak veya eylem için istek alıp yanıt döndürdüğü, bir HTTP metoduyla birlikte kullanılan belirli bir URL'dir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin