@lukca

Как принять POST запрос без express?

Всем доброго времени суток. В интернете только решения на express, но меня интересует решение на чистом node.js

Отправляется запрос на сервер ноды
fetch('/server.js', {
    method: 'POST',
    body: 'users=' + JSON.stringify({
        id: 1,
        name: 'name1'
    })
})
.then(response => {
    if (response.ok) {
        console.log('Ответ сервера: ' + response.status);
        return response.text()
    } 
})
.then(c=> {
    console.log(c);
})

Задача получить тело этого запроса.
if (pathName === '/main.js') {
        // тут получить тело запроса и вывести в консоль
        res.writeHead(200, {'Content-Type': 'text/html'})
        res.end()
    }
  • Вопрос задан
  • 443 просмотра
Решения вопроса 2
@disappearedstar
Фронтенд-разработчик
Упрощенно:
const http = require('http');
const parse = require('co-body'); // сторонний пакет для парсинга body

const server = http.createServer(async (req, res) => {
  if (req.url === 'your_server_endpoint' && req.method === 'POST') {
    try {
      const body = await parse.json(req);
      // делайте с body, что вам нужно
    } catch (err) { ... }
  }
});

server.listen(/* порт */);
Ответ написан
Комментировать
hzzzzl
@hzzzzl
https://itnext.io/how-to-handle-the-post-request-b...
https://www.w3schools.com/nodejs/obj_http_incoming...

const http = require('http');
const server = http.createServer((req, res) => {
    if (req.method === 'POST') {
        // Handle post info...
    }
    else {
      res.end(`
        <!doctype html>
        <html>
        <body>
            <form action="/" method="post">
                <input type="text" name="fname" /><br />
                <input type="number" name="age" /><br />
                <input type="file" name="photo" /><br />
                <button>Save</button>
            </form>
        </body>
        </html>
      `);
    }
});
server.listen(3000);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы