Тело запроса пусто при публикации данных формы - PullRequest
0 голосов
/ 07 июня 2019

Я использую простой почтовый запрос к своему бэкэнду для данных формы, и по какой-то причине тело всегда пусто. Я пытаюсь изолировать это, поэтому я изменил тип контента на приложение json и изменил данные на json, и только так я могу отправлять данные.

Клиентская сторона:

submitForm(event) {
        event.preventDefault();
        console.log("gggg");
        const data = new FormData(event.target);

         axios.post("http://localhost:4000/user-form-post",data).then(function (response) {
            //handle success
            console.log(response);
        })
        .catch(function (response) {
            //handle error
            console.log(response);
        });

Серверная часть:

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

app.use(express.urlencoded());

// Parse JSON bodies (as sent by API clients)
app.use(express.json());

app.use(logger('dev'));
app.post('/user-form-post', (req,res) =>{

    console.log("dfdf");
    console.log(req.body); // alwayes print empty dict {}
    res.end();

})

Это не работает, потому что ожидает jsons (ожидаемое поведение):

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

То же поведение с почтальоном.

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Вам нужно будет проанализировать данные формы с экспресс-стороны.Для этого вам придется использовать мультитер или многопартийность.Попробуйте что-то вроде этого.см. также документацию

const multiparty = require('multiparty');

app.post('/user-form-post', (req,res) =>{

   let form = new multiparty.Form();

   form.parse(req, function(err, fields, files) {
      Object.keys(fields).forEach(function(name) {
           console.log('got field named ' + name);
       });
   });
})
0 голосов
/ 12 июня 2019

Проблема с телом запроса при публикации данных: data type.

У меня недавно была проблема с Postman.Для решения проблемы вы должны опубликовать данные с типом x-www-form-urlencoded или raw -> JSON.

Goodluck.

...