Ты создаёшь веб-сервер с помощью модуля http из Node, отвечаешь на запросы и возвращаешь JSON.
Открыть этот урок в KodokonВеб-сервер - это программа, которая работает непрерывно и ждёт запросов: обращений, отправленных клиентом (браузером, мобильным приложением и так далее). На каждый запрос она возвращает ответ. Этот диалог идёт по протоколу HTTP - общему языку веба. В Node есть готовый к работе модуль http: ничего устанавливать не нужно. Последнее понятие: порт - число, которое обозначает конкретную программу на машине, как номер квартиры в доме. Мы будем использовать порт 3000; а localhost просто обозначает твою собственную машину.
import http from "node:http";
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader("Content-Type", "text/plain");
res.end("Hello from my server!");
});
server.listen(3000, () => {
console.log("Server at http://localhost:3000");
});Разберём по частям. http.createServer получает функцию, которая вызывается на каждый запрос, с двумя параметрами: req (входящий запрос) и res (формируемый ответ). res.statusCode = 200 задаёт код статуса - 200 означает «всё хорошо». res.setHeader добавляет заголовок - метаданные об ответе: здесь это его формат, обычный текст. res.end отправляет ответ и закрывает его. Наконец, server.listen(3000) заставляет сервер слушать порт 3000. Открой в браузере http://localhost:3000: появится твой текст. Обрати внимание, что программа не возвращает управление: она ждёт запросов. Останови её через Ctrl+C.
Современные серверы редко возвращают простой текст: они предоставляют API, которые отвечают в формате JSON - том самом текстовом формате, который ты уже знаешь и который понимает любой язык. Две правки: заголовок Content-Type становится application/json, а объект JavaScript превращается в текст через JSON.stringify. Заодно научимся реагировать по-разному в зависимости от req.url - пути, запрошенного клиентом: это основа маршрутизации.
import http from "node:http";
const server = http.createServer((req, res) => {
res.setHeader("Content-Type", "application/json");
if (req.url === "/api/message") {
const body = { message: "Hello!", ok: true };
res.statusCode = 200;
res.end(JSON.stringify(body));
return;
}
res.statusCode = 404;
res.end(JSON.stringify({ error: "Not found" }));
});
server.listen(3000, () => {
console.log("http://localhost:3000/api/message");
});Код статуса 404 означает «не найдено»: запрошенный путь не соответствует ни одному известному маршруту. Обрати внимание на return после первого ответа: он не даёт коду продолжиться и отправить второй ответ, что вызвало бы ошибку. Чтобы проверить, открой адрес в браузере или используй curl - инструмент командной строки, который отправляет HTTP-запросы и показывает ответ в терминале.
curl http://localhost:3000/api/message