express.js表单后req.body为空主体{}

2020-03-26 node.js express

我有以下reactjs代码并使用expressjs来处理发布请求。 req.body始终从应用返回{}。但这在邮递员中有效。

我的reactjs代码段:

  handleSubmit(e) {
    e.preventDefault();

    fetch(config.urlDev + '/notes', {
      method: 'post',
      body: { "email":"test" },
      //headers: {'Content-Type':'x-www-form-urlencoded'}
      headers: {'Content-Type':'application/json'}
    })
      .then((res) => res.json())
      .then((res) => {
        console.log(res)
      })
      .catch((err) => {
        console.log(err)
      })
  }

我的expressjs代码段:

module.exports = function (app, db) {

  app.post('/notes', (req, res) => {
     console.log(req.body)
     console.log(req.params)
     res.send(req.body)
  })
}

server.js:

const express = require('express');
const MongoClient = require('mongodb').MongoClient
const bodyParser = require('body-parser')
const db = require('./config/db');
const app = express();
const port = 8000;
const cors = require('cors');
const path = require('path');

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

MongoClient.connect(db.url, {useUnifiedTopology: true}, (err, database) => {
  if (err) return console.log(err)

  const mydb = database.db('notes')

  require('./app/routes') (app, mydb);
  app.listen(port, () => {
    console.log ("server on " + port)
  })
})

邮差

Answers

尝试取消注释 //app.use(bodyParser.json()) ,它应该可以正常工作。

或者,如果您在获取请求中发送标头作为headers: {'Content-Type':'x-www-form-urlencoded'}而不是headers: {'Content-Type':'application/json'} ,则应工作。

Related