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
Если вы выполнили те же действия на своем компьютере, вы должны увидеть два разных результата при открытии этих двух адресов:
Разделить строку запроса
Существуют встроенные модули, позволяющие легко разделить строку запроса на читаемые части, например модуль 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
Дополнительные сведения о модуле URL-адреса см. в главе Node.js URL Модуль.