Express.js, Node.js tabanlı web uygulamaları geliştirmek için popüler ve güçlü bir framework’tür. Express.js ile uygulamalarınızı daha modüler, ölçeklenebilir ve sürdürülebilir hale getirmek için middleware kullanımı kritik bir rol oynar. Bu yazıda, Express.js middleware kavramını, türlerini ve nasıl etkili bir şekilde kullanılacağını detaylı bir şekilde ele alacağız.
Middleware Nedir?
Middleware, Express.js uygulamasında HTTP isteği ile sunucu arasındaki veri akışını yöneten fonksiyonlardır. Middleware, bir isteği işleyebilir, değiştirebilir, yönlendirebilir veya bir yanıt dönebilir. Middleware kullanımı, uygulamanızı modüler ve yönetilebilir hale getirir.
Middleware Türleri
Express.js’de çeşitli middleware türleri bulunur. Bunlar arasında uygulama seviyesi, yönlendirici seviyesi, hata işleme ve dahili middleware’ler yer alır.
Uygulama Seviyesi Middleware
Uygulama seviyesi middleware, tüm uygulama genelinde çalışır ve app.use()
veya app.METHOD()
ile tanımlanır.
const express = require('express');
const app = express();
app.use((req, res, next) => {
console.log('Ziyaret edilen URL:', req.url);
next();
});
app.get('/', (req, res) => {
res.send('Merhaba, Dünya!');
});
app.listen(3000, () => {
console.log('Sunucu 3000 portunda çalışıyor');
});
Yönlendirici Seviyesi Middleware
Yönlendirici seviyesi middleware, belirli bir yönlendirici veya yol için çalışır. Bu tür middleware, router.use()
veya router.METHOD()
ile tanımlanır.
const express = require('express');
const app = express();
const router = express.Router();
router.use((req, res, next) => {
console.log('Yönlendirici için middleware çalıştı.');
next();
});
router.get('/user/:id', (req, res) => {
res.send(`Kullanıcı ID: ${req.params.id}`);
});
app.use('/api', router);
app.listen(3000, () => {
console.log('Sunucu 3000 portunda çalışıyor');
});
Hata İşleme Middleware
Hata işleme middleware, uygulamanızda meydana gelen hataları yakalar ve işleyerek kullanıcıya anlamlı mesajlar döner. Bu tür middleware, dört argüman (err
, req
, res
, next
) alır.
const express = require('express');
const app = express();
app.use((req, res, next) => {
next(new Error('Bir hata oluştu!'));
});
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Bir şeyler yanlış gitti!');
});
app.listen(3000, () => {
console.log('Sunucu 3000 portunda çalışıyor');
});
Dahili Middleware
Express.js, belirli işlevleri yerine getirmek için dahili middleware’ler sunar. Örneğin, express.static
statik dosya sunumu için, express.json
JSON verilerini işlemek için kullanılır.
const express = require('express');
const app = express();
app.use(express.static('public'));
app.get('/', (req, res) => {
res.send('Ana Sayfa');
});
app.listen(3000, () => {
console.log('Sunucu 3000 portunda çalışıyor');
});
Middleware Kullanım Örnekleri
Middleware kullanarak uygulamalarınızı daha verimli hale getirebilir ve iş akışını yönetebilirsiniz.
Kimlik Doğrulama Middleware
Kimlik doğrulama, kullanıcıların kimlik bilgilerini doğrulayarak güvenli erişim sağlar. Bu örnekte, kimlik doğrulama middleware’i kullanarak belirli bir yolun korunmasını sağlayacağız.
const express = require('express');
const app = express();
function authMiddleware(req, res, next) {
const token = req.headers['authorization'];
if (token === 'geçerli-token') {
next();
} else {
res.status(403).send('Erişim reddedildi');
}
}
app.use('/protected', authMiddleware);
app.get('/protected', (req, res) => {
res.send('Bu korunan bir yol.');
});
app.listen(3000, () => {
console.log('Sunucu 3000 portunda çalışıyor');
});
Günlükleme Middleware
Günlükleme middleware’i, her isteğin bilgilerini kaydederek izlenebilirlik sağlar.
const express = require('express');
const app = express();
function logger(req, res, next) {
console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
next();
}
app.use(logger);
app.get('/', (req, res) => {
res.send('Merhaba, Dünya!');
});
app.listen(3000, () => {
console.log('Sunucu 3000 portunda çalışıyor');
});
Middleware Sıralaması
Middleware’ler, tanımlandıkları sırayla çalıştırılır. Bu nedenle, middleware sıralaması, uygulamanızın davranışını etkileyebilir. Middleware’lerin doğru sırada tanımlanması, isteklerin ve yanıtların doğru şekilde işlenmesini sağlar.
const express = require('express');
const app = express();
app.use((req, res, next) => {
console.log('İlk middleware');
next();
});
app.use((req, res, next) => {
console.log('İkinci middleware');
next();
});
app.get('/', (req, res) => {
res.send('Merhaba, Dünya!');
});
app.listen(3000, () => {
console.log('Sunucu 3000 portunda çalışıyor');
});
Sıkça Sorulan Sorular
Express.js middleware nedir?
Middleware, Express.js uygulamasında HTTP isteği ile sunucu arasındaki veri akışını yöneten fonksiyonlardır. İstekleri işleyebilir, değiştirebilir, yönlendirebilir veya yanıt dönebilirler.
Middleware türleri nelerdir?
Express.js’de uygulama seviyesi, yönlendirici seviyesi, hata işleme ve dahili middleware türleri bulunur.
Kimlik doğrulama middleware’i nasıl kullanılır?
Kimlik doğrulama middleware’i, kullanıcıların kimlik bilgilerini doğrulamak için kullanılır. Geçerli bir kimlik bilgisi olmayan kullanıcıların erişimini engeller.
Middleware sıralaması neden önemlidir?
Middleware’ler, tanımlandıkları sırayla çalıştırılır. Doğru sırada tanımlanması, isteklerin ve yanıtların doğru şekilde işlenmesini sağlar.
Günlükleme middleware’i nedir?
Günlükleme middleware’i, her isteğin bilgilerini kaydederek izlenebilirlik sağlar. İsteklerin zamanını, yöntemini ve URL’sini kaydeder.
Hata işleme middleware’i nasıl çalışır?
Hata işleme middleware’i, uygulamanızda meydana gelen hataları yakalar ve işleyerek kullanıcıya anlamlı mesajlar döner. Dört argüman (err
, req
, res
, next
) alır.
Sonuç
Express.js middleware kullanımı, uygulamalarınızı daha modüler, ölçeklenebilir ve sürdürülebilir hale getirir. Uygulama seviyesi, yönlendirici seviyesi, hata işleme ve dahili middleware’leri doğru kullanarak, uygulamanızın iş akışını yönetebilir ve performansını artırabilirsiniz. Middleware’leri etkili bir şekilde kullanarak, büyük ve karmaşık projelerde bile daha kolay yönetim ve bakım sağlayabilirsiniz.
İçindekiler
İç Bağlantılar:
Kaynakça:
Bu yazıda belirtilen teknikleri uygulayarak, Express.js middleware kullanımı ile uygulamalarınızı daha modüler ve verimli hale getirebilirsiniz.