Учебники

Node.js — веб-модуль

Веб-сервер — это программное приложение, которое обрабатывает HTTP-запросы, отправляемые HTTP-клиентом, например веб-браузерами, и возвращает веб-страницы в ответ клиентам. Веб-серверы обычно предоставляют HTML-документы вместе с изображениями, таблицами стилей и сценариями.

Большинство веб-серверов поддерживают серверные сценарии, используя языки сценариев или перенаправляя задачу на сервер приложений, который извлекает данные из базы данных и выполняет сложную логику, а затем отправляет результат HTTP-клиенту через веб-сервер.

Веб-сервер Apache является одним из наиболее часто используемых веб-серверов. Это проект с открытым исходным кодом.

Архитектура веб-приложений

Веб-приложение обычно делится на четыре слоя —

Веб-архитектура

  • Клиент — этот слой состоит из веб-браузеров, мобильных браузеров или приложений, которые могут отправлять HTTP-запросы на веб-сервер.

  • Сервер — этот уровень имеет веб-сервер, который может перехватывать запросы клиентов и передавать им ответ.

  • Бизнес. Этот уровень содержит сервер приложений, который используется веб-сервером для выполнения необходимой обработки. Этот уровень взаимодействует с уровнем данных через базу данных или некоторые внешние программы.

  • Данные — этот слой содержит базы данных или любой другой источник данных.

Клиент — этот слой состоит из веб-браузеров, мобильных браузеров или приложений, которые могут отправлять HTTP-запросы на веб-сервер.

Сервер — этот уровень имеет веб-сервер, который может перехватывать запросы клиентов и передавать им ответ.

Бизнес. Этот уровень содержит сервер приложений, который используется веб-сервером для выполнения необходимой обработки. Этот уровень взаимодействует с уровнем данных через базу данных или некоторые внешние программы.

Данные — этот слой содержит базы данных или любой другой источник данных.

Создание веб-сервера с использованием Node

Node.js предоставляет модуль http, который можно использовать для создания HTTP-клиента сервера. Ниже приведена минимальная структура HTTP-сервера, который прослушивает порт 8081.

Создайте файл js с именем server.js —

Файл: 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/');

Теперь давайте создадим следующий HTML-файл с именем index.htm в том же каталоге, где вы создали server.js.

Файл: index.htm

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

Теперь давайте запустим server.js, чтобы увидеть результат —

$ node server.js

Проверьте вывод.

Server running at http://127.0.0.1:8081/

Сделать запрос к серверу Node.js

Откройте http://127.0.0.1:8081/index.htm в любом браузере, чтобы увидеть следующий результат.

Первое серверное приложение

Проверьте вывод на конце сервера.

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

Создание веб-клиента с использованием Node

Веб-клиент может быть создан с использованием модуля http . Давайте проверим следующий пример.

Создайте файл js с именем client.js —

Файл: 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();

Теперь запустите client.js из другого командного терминала, отличного от server.js, чтобы увидеть результат —

$ node client.js

Проверьте вывод.

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

Проверьте вывод на конце сервера.