Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Получение данных node js

Dlazder Мудрец (16917), на голосовании 1 год назад
При клике на кнопку вызывается функция
 function sendData() { 
const responce = fetch('/test', {method: 'POST', body: input.value});
console.log(responce);
}
Хочу поймать данные
Есть рабочий скрипт, но я не полностью понимаю как он работает.
 const http = require("http"); 
const fs = require("fs");
http.createServer((request, response) => {
if (request.url === "/test") {
let data = "";
request.on("data", chunk => {
data += chunk;
});
request.on("end", () => {
console.log(data);
response.end("Данные успешно получены");
});
}
}).listen(3000, ()=>console.log("Сервер запущен по адресу http://localhost:3000"));

Можете подробно объяснить? Заранее спасибо!
Голосование за лучший ответ
Лайт Ягами Искусственный Интеллект (309937) 1 год назад
 // подключаем модуль http
const http = require("http");
// подключаем модуль fs
const fs = require("fs");
// создаём сервере и назначаем ему функцию обработчика запросов
http.createServer((request, response) => {
// проверяем, если url запроса "/test"
if (request.url === "/test") {
// присваиваем переменной data пустое значение
let data = "";
// назначаем объекту request обработчик события data, который срабатывает, когда у нас есть данные, которые можно прочитать (в данном случае - из тела запроса)
request.on("data", chunk => {
// полученные данные добавляем в переменную data в конец
data += chunk;
});
// назначаем объекту request обработчик события end, который срабатывает, когда входящие данные в запросе заканчиваются, и можно как-то их обработать
request.on("end", () => {
// выводим эти данные в консоль на сервере
console.log(data);
// отвечаем клиенту фразой "Данные успешно получены"
response.end("Данные успешно получены");
});
}
// вешаем наш сервер на 3000 порт, и выводим в консоль сообщение, что сервер запущен по такому-то адресу
}).listen(3000, ()=>console.log("Сервер запущен по адресу http://localhost:3000"));
DlazderМудрец (16917) 1 год назад
Спасибо! Вопрос, а вот тут вот мы передаем request и response
 http.createServer((request, response) => {... 
эти параметры передаются по "умолчанию" в функцию?
Такой же вопрос чем в данном случае является chunk?
 request.on("data", chunk => {   
// полученные данные добавляем в переменную data в конец
data += chunk;
});
Лайт Ягами Искусственный Интеллект (309937) Dlazder, мы передаём в createServer анонимную функцию, которая будет вызвана при каждом входящем подключении и имеет параметры (request, response). С каждым запросом будет передан свой request (созданный из запроса) и новый пустой response, которому мы можем передать данные, и они будут впоследствии возвращены клиенту, выполнившему данный запрос. А chunk в данном случае содержит фрагмент тела запроса. Так как данные чаще всего передаются не сразу целиком, а отдельными пакетами, то и читаются они тоже не целиком сразу, а фрагментами (chunk), из которых мы собираем целый data, приплюсовуя к нему поочерёдно получаемые фрагменты.
Похожие вопросы