Express.js Middleware KullanımıExpress.js Middleware Kullanımı

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.

İç 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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir