JS: Синхронная асинхронность
Теория: POST-запрос
Разобравшись с 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 больше полезен тогда,
когда используется отправка с помощью чанков, например, в случае передачи
больших бинарных данных (картинки, видео).