Работа с HTTP

Цель

Разобраться в основных возможностях модуля 'http', создать простой сервер.

Предварительныетребования

Знание основ JavaScript.

Базовые знания о HTTP

Установить Node.js и npm

Умение работать с модулями Node.js

Ход урока

Для использования HTTP-сервера и клиента в Node.js необходимо подключить модуль 'http' (require('http')).

Интерфейсы HTTP в Node.js предназначены для поддержки многих функций протокола. Параметры запроса и ответа являются потоками.

Чтобы создать сервер, следует вызвать метод http.createServer([requestListener]). Метод createServer() возвращает объект http.Server. Но чтобы сервер мог прослушивать и обрабатывать входящие подключения, у объекта сервера необходимо вызвать метод server.listen(), в который в качестве параметра передается номер порта, по которому запускается сервер.

Пример использования:

const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
http.createServer().listen(port, hostname);

Работать с полученными с сервера данными можно несколькими способами.

Первый способ - это обработка события 'request'. Это событие срабатывает каждый раз, как происходит запрос.

const http = require('http');

const hostname = '127.0.0.1';
const port = 3002;

const server = http.createServer();

server.on('request', (req, res) => {
    res.end('Hello world');
})

server.listen(port, hostname);

Функция его обработки принимает два параметра:

  • request: хранит информацию о запросе
  • response: управляет отправкой ответа

Взамен обработки этого события, вы можете просто включить такую же самую функцию обработки в качестве параметра метода http.createServer([requestListener]).

const hostname = '127.0.0.1';
const port = 3002;

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('okay');
});

server.listen(port, hostname);

requestListener - это функция, которая автоматически добавляется к событию 'request'.

request

Параметр request позволяет получить информацию о запросе и представляет объект http.IncomingMessage. Отметим некоторые основные свойства этого объекта:

  • headers - Пара ключей-значений имен и значений заголовков. Названия заголовков приходят в нижнем регистре.
  • method - Метод запроса как строка. Пример: «GET», «DELETE».
  • url - URL-адрес запроса. Содержит только URL-адрес, который присутствует в фактическом HTTP-запросе.

response

Параметр response управляет отправкой ответа и представляет объект http.ServerResponse. Среди его функциональности можно выделить следующие методы:

  • end([data][, encoding][, callback]) - Этот метод сигнализирует серверу о том, что все заголовки ответа и тело отправлены и сервер должен понять что ответ завершен. Метод, response.end (), обязательно должен быть вызван для каждого ответа. При этом в метод мы можем передавать данные, которые будут добавляться к телу ответа

  • statusCode - Устанавливает статусный код ответа

  • statusMessage - Устанавливает сообщение, отправляемое вместе со статусным кодом

  • write(chunk[, encoding][, callback]) - Посылает часть тела ответа. Этот метод можно вызвать несколько раз, чтобы обеспечить последовательный вывод частей. Если этот метод вызван, то writeHead уже вызван не будет.

  • setHeader(name, value) - Устанавливает одно значение заголовка для неявных заголовков. Если этот заголовок уже существует в заголовках, подлежащих отправке, его значение будет заменено.

  • writeHead(statusCode[, statusMessage][, headers]) - Отправляет ответный заголовок в запрос. statusCode представляет собой трехзначный код состояния HTTP, например 404. Последний аргумент, headers, является заголовками ответов. При желании в качестве второго аргумента можно записать человеко читаемый statusMessage.

Практическое задание

Дополните задание с главы Работа с модулями в Node.js следующим образом:

  • создайте сервер, который будет слушать 3005 порт
  • из url запроса необходимо получать имя и возраст пользователя и выводить информацию о пользователе на экран
  • проверьте на url 127.0.0.1:3005?name=Vasya&age=20

Глоссарий

Термин Значение
Поток данных Абстракция, используемая для чтения или записи файлов, сокетов и т. п. в единой манере.
Интерфейс Общая граница между двумя функциональными объектами, требования к которой определяются стандартом; совокупность средств, методов и правил взаимодействия (управления, контроля и т.д.) между элементами системы.
Заголовок ответа Список поддерживаемых методов всего сервера или конкретного ресурса.
Тело ответа Данные, которые отправляются на клиенскую часть
Сервер (Веб-сервер) Это сервер, принимающий HTTP-запросы от клиентов, обычно веб-браузеров, и выдающий им HTTP-ответы, как правило, вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными.

Ссылки

results matching ""

    No results matching ""