


Как обрабатывать POST запросы на чистом Node.js?
Я хотел сделать форму для моего сайта, но для отправки данных на сервер везде используют express.js . Меня интересует чистая нода, поэтому буду рад, если вы пришлёте какой нибудь понятный гайд
Я сам только изучаю ноду но думаю смогу тебе помочь.
Таким образом ты отправляешь данные:
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 и т.д. Это похоже на добавления прослушивателя событий.
Обработка 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. Конечно, в зависимости от сложности проекта, код может быть более сложным и содержать дополнительную логику.