10 Ağustos 2013 Cumartesi

Express Middleware


Express ile request'ler üzerinde aspect oriented(AOP) bir yapı geliştirmek çok kolay.Express tarafından tanımlanmış Middleware'ler kullanılabileceği gibi dilersek kendi işlemlerimiz için özelleşmiş middleware'lerde yazabiliriz.

Express tarafında tanımlı middleware'lerin tam listesi ve kullanımı için Express Middleware linkini takip edebilirsiniz.

Express tarafında tanımlanmış middleware'ler genel kullanıma yönelik ihtiyaçları karşılasa da bazen özelleştirilmiş middleware'lere ihtiyaç duyabiliyoruz. Özelleştirilmiş middleware'ler yazmakta oldukça basit.
Yapıyı anlamak adına basit bir örnekle başlayalım.

Yükleniyor...


yukarıda yer alan middleware her request için "Hello!" cevabı dönmektedir.

Daha detaylı, kompleks metodlara ihtiyacımız varsa ne yapacağız. Eğer middleware'in tüm requestlerde çalışmasını istiyorsak yazdığımız middleware'için yukarıda olduğu gibi "app.use" metodunu kullanmamız yeterli.
 Aşağıda yer alan örneğimiz gelen her request için request'den gelen ip'nin yasaklı listesinde olup olmadığını kontrol eden bir middleware.

Yükleniyor...



Tanımladığımız middleware'i tıpkı yukarı da olduğu gibi kullanıyoruz.

Yükleniyor...


Peki tüm requestlerde uygulanmasını istemediğimiz bir yapı gerekirse ne yapmalıyız. Örneğin uygulamamız üzerindeki bazı linkler user authentication gerektirirken bazılarının gerektirmediği bir durumu ele alalım. Bu durumda authentication gerektiren url'lere gelen requestler kontrol edilip giriş yapan kullanıcının yetkisi varsa veya girişi yapılmışsa görüntülenmeli aksi takdirde sayfa yönlendirmesi yaparak kullanıcıdan giriş yapmasını istemelidir.

Bu durumda her bir request içinde tekrar tekrar kontrol yapmaktansa express için bir middleware yazıp ilgili requestlerde çalışmasını sağlayabiliriz.

İlgili request'in routingi tanımlarken çalışması gereken middleware metodlarıda parametre olarak geçmemiz yeterli olacaktır.Yukarıda anlatılan senaryo için hazırladığımız authorization middleware'i aşağıda görülmektedir.

Yükleniyor...


Peki tanımladığımız bu middleware'i nasıl kullanacağız.Tanımladığımız authorization dosyasının require edildiğinden yada parametre olarak geçildiğinden emin olduktan sonra;

Yükleniyor...


Tanımladığımız her url için ihtiyacımıza yönelik metodları kullanarak gerekli kontrollerin yapılmasını sağlayabiliriz.

Middleware'ler özellikle büyük projelerde hayat kurtaran, kod kalitesini yükselten, tekrar kullanılabilir yapıları destekleyen verimli bir çözüm yöntemi sunuyor.

Hiç yorum yok:

Yorum Gönder