Прием POST запросов в формате JSON на сервере NODE JS
Всем привет!! На данный момент я изучаю серверную часть Node JS и столкнулся с проблемой отправки POST Запросов в формате JSON. Как получить и как обработать данные?
Вот начальный код на чистом Node. Я понимаю что есть альтернатива: "Express", но я очень сильно хочу сделать без фреймворков.
const http = require('http');
const { parse } = require("querystring");
const fs = require('fs');
const url = require('url');
let variabel = [];
http.createServer((request, response) => {
console.log(request.method);
if (request.method === "GET") {
console.log(`Запрошенный адрес: ${request.url}`);
const filePath = request.url.substr(1);
fs.access(filePath, fs.constants.R_OK, err => {
// если произошла ошибка - отправляем статусный код 404
if (err) {
response.statusCode = 404;
response.end("Resourse not found!");
} else {
fs.createReadStream(filePath).pipe(response);
}
});
} else {
console.log(`Запрошенный адрес: ${request.url}`);
/// Тут должна быть конвертация JSON Формата
}
}).listen(3000, function() {
console.log("Server started at 3000");
});
Ответы (1 шт):
Автор решения: vsemozhetbyt
→ Ссылка
Поскольку request это stream.Readable, вы можете получить его содержимое стандартными для потоков средствами — через обработчики событий 'data' и 'end'. Но, возможно, проще будет сделать колбэк асинхронной функцией и воспользоваться тем, что stream.Readable является также асинхронным итератором:
http.createServer(async (request, response) => {
if (request.method === 'GET') {
// ...
} else {
console.log(`Запрошенный адрес: ${request.url}`);
request.setEncoding('utf8');
let json = '';
for await (const chunk of request) {
json += chunk;
}
const object = JSON.parse(json);
// ...
}
});