JS: Синхронная асинхронность
2026-02-26 16:56 Diff

Разобравшись с get запросом, пора переходить к post и передаче данных на сервер. Для начала познакомимся с методом request модуля http. Ниже пример обычного GET запроса, который мы делали с помощью http.get:

На самом деле, http.get – это обертка над http.request, которая выполняет req.end автоматически. Ее добавили в модуль http только потому, что это очень частый вариант использования. Другими словами, http.request — универсальный способ делать http запросы. Для выполнения любого запроса, нужно лишь правильно подставить глагол в опцию method, будь то хоть POST, хоть HEAD.

Следующий аспект это заголовок Content-Length. Как вы помните из курса http, этот заголовок обязателен при наличии тела запроса. Он содержит цифру — количество байт в теле запроса. Так как данные формы обычно отправляют, используя тип application/x-www-form-urlencoded, то перед подсчетом размера тела его нужно сначала сформировать, выполнив правильные преобразования.

Рекомендуется всегда использовать такой способ определения размера тела запроса, потому что он считает количество байт, в отличие от length, который считает количество символов в текстовом представлении. Различия будут проявляться при использовании символов, не входящих в ASCII.

Теперь можно собрать все вместе и выполнить post запрос с передачей данных формы:

Данные отправляются с помощью метода write объекта request. Часто можно упростить отправку до вызова req.end(postData). Метод write больше полезен тогда, когда используется отправка с помощью чанков, например, в случае передачи больших бинарных данных (картинки, видео).