ЛУЧШИЙ САЙТ ДЛЯ ВЕБ-РАЗРАБОТЧИКОВ
NodeJS. W3Schools на русском. Уроки для начинающих

En Ua

Node.js HTTP Модуль


Встроенный HTTP-модуль

Node.js имеет встроенный модуль HTTP, который позволяет Node.js передавать данные по протоколу передачи гипертекста (HTTP).

Чтобы включить модуль HTTP, используйте метод require():

var http = require('http');

Node.js как веб-сервер

Модуль HTTP может создать HTTP-сервер, который прослушивает порты сервера и возвращает ответ клиенту.

Используйте метод createServer() для создания HTTP-сервера:

Пример

var http = require('http');

//создать объект сервера:
http.createServer(function (req, res) {
  res.write('Hello World!'); //написать ответ клиенту
  res.end(); //закончить ответ
}).listen(8080); //объект сервера слушает порт 8080
Выполнить пример »

Функция, переданная в метод http.createServer() будет выполняться, когда кто-то пытается получить доступ к компьютеру через порт 8080.

Сохраните приведенный выше код в файле с именем "demo_http.js" и запустите файл:

Запустить demo_http.js:

C:\Users\Your Name>node demo_http.js

Если вы выполнили те же действия на своём компьютере, вы увидите тот же результат, что и в примере: http://localhost:8080


Добавить заголовок HTTP

Если ответ от HTTP-сервера должен отображаться как HTML, вы должны включить HTTP-заголовок с правильным типом содержимого:

Пример

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write('Hello World!');
  res.end();
}).listen(8080);
Выполнить пример »

Первый аргумент метода res.writeHead() - это код состояния; 200 означает, что всё в порядке; второй аргумент - это объект, содержащий заголовки ответа.


Читать строку запроса

Функция, переданная в http.createServer() имеет аргумент req который представляет запрос от клиента, как объект (объект http.IncomingMessage).

Этот объект имеет свойство под названием "url" который содержит часть URL-адреса, идущую после доменного имени:

demo_http_url.js

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write(req.url);
  res.end();
}).listen(8080);

Сохраните приведенный выше код в файле с именем "demo_http_url.js" и запустите файл:

Запустить demo_http_url.js:

C:\Users\Your Name>node demo_http_url.js

Если вы выполнили те же действия на своем компьютере, вы должны увидеть два разных результата при открытии этих двух адресов:

http://localhost:8080/summer

Даст такой результат:

/summer
Выполнить пример »

http://localhost:8080/winter

Даст такой результат:

/winter
Выполнить пример »

Разделить строку запроса

Существуют встроенные модули, позволяющие легко разделить строку запроса на читаемые части, например модуль URL.

Пример

Разделить строку запроса на читаемые части:

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

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  var q = url.parse(req.url, true).query;
  var txt = q.year + " " + q.month;
  res.end(txt);
}).listen(8080);

Сохраните приведенный выше код в файле с именем "demo_querystring.js" и запустите файл:

Запустить demo_querystring.js:

C:\Users\Ваше имя>node demo_querystring.js

Адрес:

http://localhost:8080/?year=2022&month=July

Даст такой результат:

2022 July
Выполнить пример »

Дополнительные сведения о модуле URL-адреса см. в главе Node.js URL Модуль.