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

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

Что такое веб-сервер Nodejs?

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

В Nodejs доступно множество модулей, таких как модуль «HTTP» и «запрос». Эти модули помогают обрабатывать запросы, связанные с сервером, в выделенном пространстве веб-сервера. Давайте посмотрим, как создать базовое приложение веб-сервера с помощью Nodejs в этом блоге.

Читать: 5 способов делать HTTP-запросы в Nodejs

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

Архитектура веб-приложения в целом делится на 4 уровня:

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

Читайте: Идеальная архитектура Nodejs: как это работает технически?»

Создайте веб-сервер Nodejs

Чтобы создать веб-сервер с помощью Nodejs, он обрабатывает входящие запросы асинхронно,

В следующем примере создается веб-сервер Nodejs, содержащийся в файле server.js в его каталоге:

var http = require('http'); // 1 - Import Nodejs core module 
var server = http.createServer(function (req, res) { // 2 -creating server 
   //handle incomming requests here.. 
}); server.listen(5000); //3 - listen for any incoming requests 
console.log('Nodejs web server at port 5000')

Импортируйте модуль HTTP с помощью функции require() в приведенном выше примере. Этот модуль HTTP считается основным модулем Nodejs. Поэтому необходимо установить его с помощью Диспетчера пакетов узлов (NPM).

Делаем следующий шаг, чтобы вызвать метод HTTP createServer() и указать функцию обратного вызова с запросом, пришедшим от клиента.

В конце вызовите метод listen() объекта сервера, который был возвращен методом createServer() с номером порта.

Теперь запустите вышеуказанный веб-сервер, написав команду node server.js в командной строке, и он отобразит сообщение, как показано ниже.

C: \> node server.js
Nodejs web server at port 5000 is running

Вот как вы создаете веб-сервер Nodejs, используя метод программирования. Теперь следующие шаги помогут вам обрабатывать HTTP-запросы и отправлять ответ на веб-сервер Nodejs.

Обработка HTTP-запроса

Метод http.createServer() включает параметры запроса и ответа, сгенерированные Nodejs. Чтобы получить информацию о текущем HTTP-запросе, используйте объект запроса.

Такая информация HTTP содержит URL-адрес, заголовок запроса и данные. В следующем примере показана обработка HTTP-запросов и ответов на веб-сервере Nodejs.

var http = require('http'); // Import Nodejs core module 
var server = http.createServer(function (req, res) { // create web server 
   if (req.url == '/') { // check the URL of the current request 
// set response header
 res.writeHead(200, { 'Content-Type': 'text/html' }); 
/ set response content 
res.write('<html><body><p>This is home Page.</p></body></html>'); res.end();
}
else if (req.url == "/student") {
res.writeHead(200, { 'Content-Type': 'text/html' }); 
res.write('<html><body><p>This is student Page.</p></body></html>'); 
res.end();
} 
else if (req.url == "/admin") {
res.writeHead(200, { 'Content-Type': 'text/html' }); 
res.write('<html><body><p>This is admin Page.</p></body></html>'); 
res.end(); 
} 
else res.end('Invalid Request!'); }); 
server.listen(5000); //6 - listen for any incoming requests 
console.log('Nodejs web server at port 5000')

В приведенном выше сценарии req.url используется для проверки URL-адреса текущего запроса. и отправляет ответ.

Чтобы отправить ответ, установите заголовок ответа с помощью метода writeHead(), а затем напишите строку в качестве тела ответас помощью метода write().

Наконец, веб-сервер Nodejs отправляет ответ с помощью метода end() в соответствии с запросом клиента.

Теперь просто запустите указанный выше веб-сервер, как показано ниже:

C: \> node server.js
Nodejs web server at port 5000

Чтобы протестировать пример кода, используйте программу командной строки curl, предустановленную программу, которая поставляется с большинством компьютеров Mac и Linux.

Curl  -i http://localhost:5000

После выполнения вышеуказанных шагов теперь вы могли фактически увидеть следующий ответ:

HTTP/1.1 200 OK
Content-Type: text/plain
Date: Wed, 22 Jan 05:36:05 GMT
Connection: keep-alive
This is home page

Для пользователей Windows используйте http://localhost:5000 в своем браузере и увидите следующий результат.

http://localhost:5000
This is Home page

Таким же образом используйте http://localhost:5000/student в своем браузере и увидите следующий результат.

http://localhost:5000/student
This is student page

Он показывает Неверный запрос для всех других запросов, кроме указанных выше URL.

Отправить ответ JSON

В следующем примере показано, как обслуживать ответ JSON от веб-сервера Nodejs.

var http = require('http');
var server = http.createServer(function (req, res) { 
if (req.url == '/data') 
{ //check the URL of the current request          res.writeHead(200, 
{ 'Content-Type': 'application/json' }); res.write(JSON.stringify({ message: "Hello World"}));
res.end();
}
}); 
server.listen(5000); 
console.log('Nodejs web server at port 5000')

Таким простым способом вы можете создать веб-сервер Nodejs, который будет обслуживать разные ответы для разных функций.

ВЫВОД

В Nodejs мы использовали метод Http.createServer() встроенного HTTP-модуля Nodejs для создания веб-сервера HTTP, который отвечает на запросы, сделанные через порт.

Если вы планируетесоздать веб-приложение Nodejs, мы с радостью создадим его для вас. Свяжитесь с нами для получения более подробной информации о веб-разработке.