Node.js - Web Modülü

İnternet sunucusu nedir?

Web Sunucusu, HTTP istemcisi tarafından web tarayıcıları gibi gönderilen HTTP isteklerini işleyen ve istemcilere yanıt olarak web sayfaları döndüren bir yazılım uygulamasıdır. Web sunucuları genellikle html belgeleri, resimler, stil sayfaları ve komut dosyalarıyla birlikte sunar.

Web sunucularının çoğu, komut dosyası dillerini kullanarak veya görevi bir veritabanından veri alan ve karmaşık mantık gerçekleştiren ve ardından Web sunucusu aracılığıyla HTTP istemcisine bir sonuç gönderen bir uygulama sunucusuna yeniden yönlendirerek sunucu tarafı komut dosyalarını destekler.

Apache web sunucusu, en yaygın kullanılan web sunucularından biridir. Açık kaynak kodlu bir projedir.

Web Uygulama Mimarisi

Bir Web uygulaması genellikle dört katmana ayrılır -

  • Client - Bu katman web tarayıcıları, mobil tarayıcılar veya web sunucusuna HTTP isteklerinde bulunabilen uygulamalardan oluşur.

  • Server - Bu katman, istemciler tarafından yapılan talepleri kesip onlara yanıtı iletebilen Web sunucusuna sahiptir.

  • Business- Bu katman, gerekli işlemi yapmak için web sunucusu tarafından kullanılan uygulama sunucusunu içerir. Bu katman, veritabanı veya bazı harici programlar aracılığıyla veri katmanıyla etkileşime girer.

  • Data - Bu katman, veritabanlarını veya diğer herhangi bir veri kaynağını içerir.

Düğüm kullanarak Web Sunucusu Oluşturma

Node.js bir httpbir sunucunun HTTP istemcisini oluşturmak için kullanılabilen modül. Aşağıda, 8081 bağlantı noktasında dinleyen HTTP sunucusunun çıplak minimum yapısı verilmiştir.

Server.js adında bir js dosyası oluşturun -

File: server.js

var http = require('http');
var fs = require('fs');
var url = require('url');

// Create a server
http.createServer( function (request, response) {  
   // Parse the request containing file name
   var pathname = url.parse(request.url).pathname;
   
   // Print the name of the file for which request is made.
   console.log("Request for " + pathname + " received.");
   
   // Read the requested file content from file system
   fs.readFile(pathname.substr(1), function (err, data) {
      if (err) {
         console.log(err);
         
         // HTTP Status: 404 : NOT FOUND
         // Content Type: text/plain
         response.writeHead(404, {'Content-Type': 'text/html'});
      } else {	
         //Page found	  
         // HTTP Status: 200 : OK
         // Content Type: text/plain
         response.writeHead(200, {'Content-Type': 'text/html'});	
         
         // Write the content of the file to response body
         response.write(data.toString());		
      }
      
      // Send the response body 
      response.end();
   });   
}).listen(8081);

// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');

Ardından, server.js'yi oluşturduğunuz dizinde index.htm adlı aşağıdaki html dosyasını oluşturalım.

File: index.htm

<html>
   <head>
      <title>Sample Page</title>
   </head>
   
   <body>
      Hello World!
   </body>
</html>

Şimdi sonucu görmek için server.js'yi çalıştıralım -

$ node server.js

Çıkışı doğrulayın.

Server running at http://127.0.0.1:8081/

Node.js sunucusuna istekte bulunun

Aşağıdaki sonucu görmek için herhangi bir tarayıcıda http://127.0.0.1:8081/index.htm adresini açın.

Çıktıyı sunucu tarafında doğrulayın.

Server running at http://127.0.0.1:8081/
Request for /index.htm received.

Node kullanarak Web istemcisi oluşturma

Bir web istemcisi kullanılarak oluşturulabilir httpmodül. Aşağıdaki örneğe bakalım.

Client.js adlı bir js dosyası oluşturun -

File: client.js

var http = require('http');

// Options to be used by request 
var options = {
   host: 'localhost',
   port: '8081',
   path: '/index.htm'  
};

// Callback function is used to deal with response
var callback = function(response) {
   // Continuously update stream with data
   var body = '';
   response.on('data', function(data) {
      body += data;
   });
   
   response.on('end', function() {
      // Data received completely.
      console.log(body);
   });
}
// Make a request to the server
var req = http.request(options, callback);
req.end();

Şimdi sonucu görmek için client.js'yi server.js dışında farklı bir komut terminalinden çalıştırın -

$ node client.js

Çıkışı doğrulayın.

<html>
   <head>
      <title>Sample Page</title>
   </head>
   
   <body>
      Hello World!
   </body>
</html>

Çıktıyı sunucu tarafında doğrulayın.

Server running at http://127.0.0.1:8081/
Request for /index.htm received.