Node.js - веб-модуль
Что такое веб-сервер?
Веб-сервер - это программное приложение, которое обрабатывает HTTP-запросы, отправленные HTTP-клиентом, как веб-браузеры, и возвращает веб-страницы в ответ клиентам. Веб-серверы обычно доставляют html-документы вместе с изображениями, таблицами стилей и сценариями.
Большинство веб-серверов поддерживают сценарии на стороне сервера, используя языки сценариев или перенаправляя задачу на сервер приложений, который извлекает данные из базы данных и выполняет сложную логику, а затем отправляет результат клиенту HTTP через веб-сервер.
Веб-сервер Apache - один из наиболее часто используемых веб-серверов. Это проект с открытым исходным кодом.
Архитектура веб-приложений
Веб-приложение обычно делится на четыре уровня:
Client - Этот уровень состоит из веб-браузеров, мобильных браузеров или приложений, которые могут выполнять HTTP-запросы к веб-серверу.
Server - Этот уровень имеет веб-сервер, который может перехватывать запросы, сделанные клиентами, и передавать им ответ.
Business- Этот уровень содержит сервер приложений, который используется веб-сервером для выполнения необходимой обработки. Этот уровень взаимодействует с уровнем данных через базу данных или некоторые внешние программы.
Data - Этот слой содержит базы данных или любой другой источник данных.
Создание веб-сервера с использованием узла
Node.js предоставляет httpмодуль, который можно использовать для создания HTTP-клиента сервера. Ниже приводится минимальная структура HTTP-сервера, который прослушивает порт 8081.
Создайте файл js с именем server.js -
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/');
Затем давайте создадим следующий html-файл с именем index.htm в том же каталоге, где вы создали server.js.
File: 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 -
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();
Теперь запустите client.js из другого командного терминала, кроме server.js, чтобы увидеть результат -
$ node client.js
Проверьте вывод.
<html>
<head>
<title>Sample Page</title>
</head>
<body>
Hello World!
</body>
</html>
Проверьте вывод на стороне сервера.
Server running at http://127.0.0.1:8081/
Request for /index.htm received.