Node.js экспресс — текст запроса POST всегда пуст

#javascript #html #node.js #express #post

#javascript #HTML #node.js #экспресс #Публикация

Вопрос:

Я пытаюсь прочитать тело POST-запроса, используя Express в узле.JS framework. Я отправляю HTTP-POST-запрос с использованием HTML-формы. Я обнаружил POST-запрос на WireShark со следующими данными:

введите описание изображения здесь

Это показывает, что запрос отправлен успешно. Я ожидал формат JSON, который является тем, который Express успешно проанализировал для меня, но этот формат, похоже, просто не работает, что бы я ни пробовал. Моя текущая реализация выглядит следующим образом:

 var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var jsonParser = bodyParser.json()

//Import static files
app.use(express.static('../public'))

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.post('/', jsonParser, (req, res) => {
    console.log(req.body);
    res.send(200);
});

app.listen(port, () => console.log("Server started"));
 

Независимо от того, что я пробую из других сообщений, он по-прежнему, похоже, не возвращает мне никаких данных.

введите описание изображения здесь

У кого-нибудь есть идея, как решить эту проблему?

Комментарии:

1. Тело вашего запроса закодировано в форме url, а не в формате JSON, чего бы это ни стоило.

Ответ №1:

Почему вы используете ‘JsonParser’ в маршруте приложения? Попробуйте что-то вроде:

 const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.urlencoded({ extended: true }));

app.post('/post-test', (req, res) => {
    console.log('Got body:', req.body);
    res.sendStatus(200);
});