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\Your Name>node demo_querystring.js
Адреса:
http://localhost:8080/?year=2017&month=July
Дізнайтеся більше про URL-модуль у розділі Node.js URL-модуль.