Middleware — "orta qat" funksiyası kimi çıxış edən proqram komponentidir və serverə daxil olan sorğular (request) ilə göndərilən cavablar (response) arasında aralıq mərhələ kimi fəaliyyət göstərir. O, bir sorğunun serverdə hansı mərhələlərdən keçəcəyini müəyyənləşdirən əsas hissələrdən biridir.
Middleware-lər, adətən, modul və təkrar istifadə oluna bilən şəkildə yazılır və serverin davranışına çevik şəkildə nəzarət etməyə imkan verir.
Middleware necə işləyir?
- İstifadəçi serverə sorğu göndərir (məsələn, login formu).
- Sorğu əvvəlcə bir və ya bir neçə middleware funksiyasından keçir.
- Hər bir middleware sorğunu:
- yoxlaya bilər (məsələn, istifadəçi giriş məlumatları doğrudurmu?),
- dəyişə bilər (məsələn, sorğunun başlıqlarına əlavə məlumat əlavə edə bilər),
- log yaza bilər (məsələn, giriş cəhdlərini qeyd edə bilər),
- və ya icazə verməyə bilər (məsələn, istifadəçi yetkilidirsə, davam etdir).
- Sorğu sonunda əsas handler funksiyasına ötürülür (məsələn, məlumat bazasından cavab gətirən funksiya).
- Cavab (response) da geri qayıdarkən middleware-lərdən keçə bilər və əlavə emal oluna bilər.
Harada istifadə olunur?
Middleware-lər bir çox məşhur server tərəfli framework-də geniş istifadə olunur:
- Express.js (Node.js üçün)
- app.use(), app.get(), app.post() və s. ilə tətbiq edilir.
- Məsələn: autentifikasiya, rate limiting, CORS ayarları.
- Django (Python üçün)
- Middleware-lər MIDDLEWARE siyahısında qeyd edilir.
- Məsələn: istifadəçi sessiyası yoxlama, loq yazma, URL yönləndirmələri.
- ASP.NET, Laravel, FastAPI və digər back-end texnologiyalarında da bu konseptdən geniş istifadə olunur.
Middleware növləri
- Global Middleware – Bütün sorğulara tətbiq olunur.
- Route-specific Middleware – Yalnız müəyyən URL-lərə və ya sorğu tiplərinə tətbiq olunur.
- Error-handling Middleware – Xətaları tutmaq və düzgün cavablar qaytarmaq üçün istifadə olunur.
- Custom Middleware – İstifadəçinin özünün yazdığı spesifik funksiya.
Express.js nümunəsi:
const express = require('express');
const app = express();
// Middleware: sorğunu loq edən funksiyası
app.use((req, res, next) => {
console.log(`${req.method} ${req.url}`);
next(); // növbəti middleware-ə keçir
});
// Middleware: autentifikasiya yoxlaması
function authMiddleware(req, res, next) {
if (req.headers.authorization === "secret-token") {
next();
} else {
res.status(401).send('İcazə verilmir');
}
}
app.get('/dashboard', authMiddleware, (req, res) => {
res.send('Admin paneli');
});
app.listen(3000, () => console.log('Server başladı'));
Nə üçün vacibdir?
- Kodun təmizliyi və strukturlaşdırılması
- Mərkəzləşdirilmiş loqlama və təhlükəsizlik nəzarəti
- Performans optimizasiyası
- Modul yanaşma ilə miqyaslama imkanı