как я могу получить тело почтового запроса ax ios с express nodejs? - PullRequest
0 голосов
/ 06 мая 2020

сторона моего браузера js код:

import axios from 'axios';

var testObject = {
   field : 'this is a test field'
}

axios.post('/create', testObject)
.then((res) => {
   console.log(res);
});

мой nodejs код:

const express = require('express');
const path = require('path');

const app = express();

//middlewares
app.use(express.urlencoded({extended: false}));
app.use(express.static(path.resolve(__dirname, '../dist')));

app.post('/create', (req, res) => {
  console.log(req.body);
  res.send('this is the server response');
});

const port = 3000;
app.listen(port, () => {
  console.log('server listening on port ' + port);
});

мой node js вывод:

server listening on port 3000
{}

вывод моей консоли браузера:

{data: "this is the server response", status: 200, statusText: "OK", headers: {…}, config: 
{…}, …}

, пожалуйста, посмотрите, что я уже использую промежуточное ПО для тела парсера, запрос работает нормально, но по какой-то причине сервер не может получить тело запроса.

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Вы должны использовать app.use(express.json())

// parse application/json
server.use(express.json());

app.post('/create', (req, res) => {
  console.log(req.body);
  res.send('this is the server response');
});

Вы также должны обновить свой ajax запрос следующим образом:

contentType: "application/json",
data: JSON.stringify(hellodata),
0 голосов
/ 06 мая 2020

Обязательно используйте парсер тела для Express. В случае, если ваш проект зависит от некоторого сгенерированного шаблонного кода, он, скорее всего, уже включен в ваш основной серверный скрипт. Если нет:

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

npm install body-parser --save

теперь получите body вашего запроса в nodejs

app.post('/create', (req, res, next) => { console.log(req.body); });

...