HTTP-модуль Node.js
Встроенный HTTP-модуль
Node.js имеет встроенный модуль HTTP, который позволяет Node.js передавать данные по протоколу передачи гипертекста (HTTP).
Чтобы включить модуль HTTP, используйте
require()
метод:
var http = require('http');
Node.js как веб-сервер
Модуль HTTP может создать HTTP-сервер, который прослушивает порты сервера и возвращает ответ клиенту.
Используйте createServer()
метод для создания HTTP-сервера:
Пример
var http = require('http');
//create a server object:
http.createServer(function
(req, res) {
res.write('Hello World!'); //write a response to the
client
res.end(); //end the response
}).listen(8080); //the
server object listens on port 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
Если вы выполнили те же шаги на своем компьютере, вы должны увидеть два разных результата при открытии этих двух адресов:
Произведет этот результат:
/summer
Произведет этот результат:
/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\Your Name>node demo_querystring.js
Адрес:
Произведет этот результат:
2017 July
Подробнее о модуле URL читайте в главе « Модуль URL Node.js ».