Ana içeriğe geç

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.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/middleware

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

Express.js'te bir loglama middleware'ijavascript
// 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

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar