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

Как обрабатывать POST запросы на чистом Node.js?

Screamer Ученик (122), на голосовании 1 год назад
Я хотел сделать форму для моего сайта, но для отправки данных на сервер везде используют express.js . Меня интересует чистая нода, поэтому буду рад, если вы пришлёте какой нибудь понятный гайд
Голосование за лучший ответ
Олег Че Мудрец (10833) 1 год назад
Обработка POST запросов на чистом Node.js включает в себя несколько шагов:

1. Подключение модуля http и создание сервера

```javascript
const http = require('http');

const server = http.createServer((req, res) => {
// код обработки запросов
});

server.listen(3000, () => {
console.log('Сервер запущен');
});
```

2. Обработка POST запросов

Для обработки POST запросов нужно обратиться к объекту запроса (req), который получен в параметре колбэка при обращении к серверу. В объекте запроса содержится поток данных, отправленных клиентом.

```javascript
const http = require('http');

const server = http.createServer((req, res) => {
if (req.method === 'POST') {
let data = '';

req.on('data', chunk => {
data += chunk.toString();
});

req.on('end', () => {
console.log(data);
res.end('Данные получены');
});
}
});
```

3. Парсинг данных

После получения данных, отправленных клиентом, их необходимо распарсить в объект JavaScript. Для этого можно использовать модуль querystring.

```javascript
const http = require('http');
const querystring = require('querystring');

const server = http.createServer((req, res) => {
if (req.method === 'POST') {
let data = '';

req.on('data', chunk => {
data += chunk.toString();
});

req.on('end', () => {
const parsedData = querystring.parse(data);
console.log(parsedData);
res.end('Данные получены');
});
}
});
```

4. Отправка ответа

После обработки данных и выполнения необходимых действий с ними, нужно отправить ответ клиенту.

```javascript
const http = require('http');
const querystring = require('querystring');

const server = http.createServer((req, res) => {
if (req.method === 'POST') {
let data = '';

req.on('data', chunk => {
data += chunk.toString();
});

req.on('end', () => {
const parsedData = querystring.parse(data);
console.log(parsedData);
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Данные получены');
});
}
});

server.listen(3000, () => {
console.log('Сервер запущен');
});
```

Это базовый пример обработки POST запросов на Node.js. Конечно, в зависимости от сложности проекта, код может быть более сложным и содержать дополнительную логику.
ScreamerУченик (122) 1 год назад
Спасибо!
Dlazder Мудрец (16914) 1 год назад
Я сам только изучаю ноду но думаю смогу тебе помочь.
Таким образом ты отправляешь данные:
 fetch('/data', {method: 'POST', body: JSON.stringify(responceText)}) 
в body пихаешь к примеру json, как у меня, я закидыаю массив с объектами который преобразовывается в json.

Ну а на бэке принимаешь:
 if (request.url === '/data') { 
let data = "";

request.on('data', (chunk) => {
data += chunk;
}); // добавляем прослушиватель на событие data (никак не связано с /data).
//Так как ответ приходит частями (чанками) мы добавляем их
//в нашу пустую переменную data.
//После получения всех чанков срабатывает нижний прослушиватель request.on('end'
// который уже взаимодействует с полученной информацией которая была сохранена в переменной data

request.on('end', () => {
// Здесь у меня происходят действия а именно запись файла
fs.writeFile('data.json', data, () => {
console.log('data modified');
})
responce.end('Данные успешно получены'); // этот текст не выведется, но ответ будет завершен
})
}
Как видишь, в fetch мы запрашиваем url /data а на бэке просто при запрашивании этого url получаем данные и производим манипуляции. Способ хорош тем что ты можешь создавать разные сценарии, запрашивая разные url
/data /users /form и т.д. Это похоже на добавления прослушивателя событий.
Похожие вопросы