Web Programlama

Web Programlama

DERS PROGRAMI
Web Programlama 401 Ders Programı

Kendi HTTP Orta Katman Ürününüzü Oluşturmak

Lisans: Creative Commons 26.11.2020 tarihinde güncellendi
Bakabileceğiniz Etiketler: Eğitmen: Geleceği Yazanlar Ekibi

Aslında farkettiğiniz gibi, bir orta katman bileşeni, standart HTTP sunucu talep dinleyiciye (server request listener) benzeyen, istem ve cevap nesnelerini alan bir fonksiyondan başka bir şey değildir.

Bir orta katman ürün bileşenini çalıştırabilmek için önce belleğe yüklemek gerekir. Bu amaçla da

$ npm install connect

komutu kullanılır.

 

Basit bir örnek

Ortak katman (middleware) ürün kullanacağınız çok basit bir örnek aşağıda verilmiştir. Öncelikle aşağıdaki kodu oluşturun.

var http=require('http');
var connect = require('connect');
// import middlewares

var SELAM = require('/usr/local/bin/cnn.js');
var app = http.createServer(SELAM);
app.listen(8080);

Daha sonra, kodu conn.js adı ile saklayın.

Şimdi de aşağıdaki kodu oluşturun ve aynı dizin içinde cnn.js adı ile saklayın.

function SELAM(req, res) { 
res.end('MERHABA');
}
module.exports = SELAM;

Ardından, conn.js'i çalıştırın.

Tarayıcıda 127.0.0.1:8080 IP adresini girin. Aşağıdaki sonucu elde edeceksiniz:

 

Örnek kod: Yasaklı siteler

Normal olarak bir connect server, bir istem (request) alırsa, HTTP cevabından önce bazı fonksiyonlar devreye girer. Bu fonksiyonlar, orta katman ürünü olarak adlandırılır. Connect ile çalışırken req, res ve next nesneleri kullanılır. Orta katman ürün fonksiyonları işlevlerini yerine getirirken, bu nesneleri, gerekirse bir sonraki inline fonksiyona geçirir.

Orta katman ürün fonksiyonları, connect'te connect.use(), express'te ise app.use() metotları sayesinde talep akışı (request flow) içine yüklenir. Aşağıdaki programa bir göz atın.

var http = require('http');
var connect = require('connect');

var app = connect();
var ipban = require('./ipban.js');
var app = connect();
app.use(ipban());
app.use(function(req, res) {
    res.end('SELAM!');
});
app.use(function(req, res) {
    res.end('SELAM!');
});

http.createServer(app).listen(3000);

Burada sadece bir orta katman ürünü mevcuttur. Sunucuya her talep olduğunda 'SELAM' mesajını vermektedir. Orta katman ürünleri, her ne kadar connect.use() metodu kullanılarak yüklenebilecek fonksiyonlar ise de en iyi yol yine de Node.js kodu hazırlamaktır.

Şimdi yukardaki kodu sercon.js adıyla bin dizinine yükleyin.

Aşağıdaki programda ise yasaklı olduğu var sayılan IP adreslerini içeren bir dizi oluşturulmakta ve yasaklı sitenin talep edilmesi halinde verilecek mesaj gönderilmektedir:

var YASAK = [
'127.0.0.1',
'192.168.2.12',
];

// the middleware function
module.exports = function() {

    return function(req, res, next) {
        if (YASAK.indexOf(req.connection.remoteAddress) > -1) {
            res.end('YASAK');
        }
        else { next(); }
    }

Bu programı da ipban.js adıyla kaydedin.

Şimdi sunucuyu çalıştırmak için

node sercon.js

komutunu girin:

Tarayıcıdaysa 127.0.0.1:3000 adresini girerek bu sunucuya erişmeye çalışın.

Web sayfasında 'YASAK' mesajının yazıldığını göreceksiniz.