Створення веб-сервера HTTP в Node.js за допомогою Code Приклад
⚡ Розумний підсумок
Node.js створює робочий вебсервер за кілька рядків, використовуючи вбудований http-модуль. Сервер прослуховує вибраний порт і відповідає на кожен запит кодом стану та тілом запиту, тоді як окремий код отримує дані з інших сайтів.

Команда Node.js Фреймворк здебільшого використовується для створення серверних застосунків. Його можна легко використовувати для створення вебсерверів, які надають контент користувачам.
Кілька модулів обробляють запити, пов'язані з сервером, вбудований http головний модуль серед них. Ми розглянемо, як створити базовий веб-серверний застосунок за допомогою Node.js, а потім як запитувати дані з іншого сайту.
Вузол як веб-сервер за допомогою HTTP
Давайте розглянемо приклад того, як створити та запустити перший застосунок Node.js.
Програма створює простий серверний модуль, який прослуховує порт 7000. Коли через браузер на цьому порту надсилається запит, сервер надсилає Привіт світ відповідь клієнту.
Code Пояснення
- Команда
requireфункція читає a JavaScript файл, виконує його та повертає його об'єкт exports. Тут він завантажуєhttpмодуль, щоб його функціональність була доступна в застосунку. - Серверний застосунок створюється з простої функції. Ця функція виконується щоразу, коли запит надходить до сервера.
- Коли запит отримано, відповідь надсилається зі статусом 200Це стандартний код стану в HTTP-заголовку для успішної відповіді.
- Тіло відповіді саме по собі є рядком Привіт світ.
server.listenзмушує програму прослуховувати запити клієнтів на порту 7000. Можна використовувати будь-який доступний порт.
Якщо команда виконана успішно, у браузері з’явиться наступний вивід.
Вихід
З виводу:
- Перегляд локального хоста URL на порту 7000 відображається рядок Привіт світ на сторінці.
- Оскільки в коді вказано порт 7000, вивід видно лише під час перегляду цього порту.
Ось код для довідки:
var http = require('http'); var server = http.createServer(function(request, response) { response.writeHead(200, { "Content-Type": "text/plain" }); response.end("Hello World\n"); }); server.listen(7000);
Обробка запитів GET у Node.js
Здійснення GET-запиту для отримання даних з іншого сайту в Node.js є простим. Історично для цього було потрібно request модуль, встановлений з командного рядка:
npm install request
Ця команда просить менеджер пакетів Node завантажити потрібний модуль та встановити його. Після успішного встановлення командний рядок відображає назву та версію встановленого модуля у форматі <name>@<version>.
На знімку вище, request Модуль та його номер версії були завантажені та встановлені.
Code Пояснення
- Команда
requestМодуль, встановлений на попередньому кроці, надає функції, необхідні для здійснення GET-запитів до вебсайтів. - До сайту надсилається GET-запит, і зворотний виклик виконується після отримання відповіді. Зворотний виклик отримує три параметри:
- помилка — фіксує будь-які помилки, що виникли під час подання запиту.
- відповідь — містить HTTP-заголовки, що повертаються разом із відповіддю.
- Body — містить весь зміст відповіді.
- Контент, отриманий у
bodyпараметр записується в консоль.
Ось код для довідки:
var request = require("request"); request("https://example.com", function(error, response, body) { // Always check the error parameter before using the body if (error) { console.error("Request failed:", error.message); return; } console.log(body); });
⚠️ Повідомлення про припинення підтримки: request модуль був повністю застаріло у лютому 2020 року і не отримує подальших оновлень. Він все одно встановлюється та працює, тому наведений вище приклад залишається дійсним для існуючих проектів, але npm install request тепер виводить попередження про застарівання. Новий код має використовувати вбудований fetch функція, показана в наступному розділі.
Як робити HTTP-запити за допомогою нативного fetch у Node.js
Вузол включив глобальний fetch функція починаючи з версії 18, що відповідає API, які вже надають браузери. Встановлення пакета не потрібне, а функція повертає обіцянку, тому вона працює безпосередньо з async/await.
// No require and no npm install needed on Node 18 or later async function getData() { try { const response = await fetch("https://example.com"); // fetch does NOT reject on 404 or 500 — check ok yourself if (!response.ok) { throw new Error("HTTP status " + response.status); } const body = await response.text(); console.log(body); } catch (err) { // Network failures and the throw above both land here console.error("Request failed:", err.message); } } getData();
Варто зазначити три відмінності від стилю зворотного виклику. По-перше, fetch відхиляє лише у разі збою на рівні мережі; HTTP 404 або 500 все одно успішно вирішується, тому response.ok перевірка існує та чому її пропуск є найпоширенішою помилкою при переході з requestПо-друге, тіло запиту не доставляється разом із відповіддю — його потрібно явно зчитувати разом із response.text() для звичайного тексту або response.json() для JSON, і кожен з них повертає власну обіцянку. По-третє, оскільки весь виклик базується на обіцянці, єдиний try/catch охоплює як запит, так і зчитування тіла, повністю замінюючи параметр зворотного виклику error-first.
Для скриптів, які мають працювати на Node 16 або ранішій версії, встановіть node-fetch or axios натомість, оскільки обидва надають порівнянний інтерфейс на основі обіцянок і вимагають лише зміни рядка імпорту після оновлення середовища виконання.
запит проти вибору проти аксіом: що використовувати
У більшості матеріалів Node зустрічаються три HTTP-клієнти, і лише один з них є розумним стандартним для нової роботи. Вони відрізняються статусом обслуговування, тим, чи потрібна взагалі залежність, і тим, як кожен з них сигналізує про статус помилки, тому в таблиці нижче вони розташовані поруч.
| Аспект | запросити | вибірка (вбудована) | аксіоси |
|---|---|---|---|
| Статус | Застаріло з 2020 року | Зберігається в ядрі | Активно обслуговується |
| Встановлення | пакет npm | Немає на Node 18+ | пакет npm |
| стиль | Зворотний виклик з першою помилкою | Обіцянка | Обіцянка |
| Розбір JSON | Вручну або у форматі JSON | Вручну через response.json() | автоматичний |
| Відхилення на 404 або 500 | Немає | Немає | Так |
Скористайтеся кнопкою fetch для нових проектів у поточній версії Node, оскільки це не додає залежностей та відповідає вже відомому розробникам API браузера. Виберіть axios коли автоматична обробка JSON, перехоплювачі запитів або відхилення у разі помилок рятували б реальний код. Зберегти request лише всередині застарілих програм, які вже залежать від нього та планують його замінити.
Поширені помилки сервера Node.js та як їх виправити
Більшість збоїв під час запуску першого Node-сервера виникають через порти, шляхи або відсутність відповіді, а не через сам код сервера.
- ЕАДДРІНЮЗ: інший процес вже займає порт. Запустіть
netstat -ano | findstr :7000on Windowsабоlsof -i :7000on macOS і Linux, потім зупиніть цей процес або виберіть інший порт. - EACCES на низькому порту: Порти нижче 1024 потребують підвищених прав. Під час розробки використовуйте порт вище 1024, наприклад, 3000 або 7000.
- Браузер зависає і ніколи не завантажується: обробник ніколи не телефонував
response.end()З'єднання залишається відкритим до закінчення часу очікування, тому кожен шлях через обробник має завершувати відповідь. - Не вдається знайти модуль 'http': ім'я файлу було написано з помилкою, або скрипт працює в браузері, а не в Node. Модулі Core не потребують встановлення.
- Зміни не відображаються: Node завантажує файл один раз під час запуску. Перезапускайте процес після кожного редагування або запускайте його під спостереженням, таким як
node --watch server.js.




