简体   繁体   中英

req.body is empty in express

I am creating a nodejs api in window using express framework. I alerady used body-parser.json(). But req.body is coming empty in linux.The program is properly working in windows but in linux, req.body is empty and req.body.name key is undefined.

I already tried the following steps : - app.use(bodyParser.urlencoded({extended:true})) app.use(bodyParser.json())

const express = require('express'),
      app = express(),
      config = require('./config/configFile'),
      route = require('./routes/userRoute'),
      bodyParser = require('body-parser'),
      mongoose = require('mongoose')

app.use(bodyParser.urlencoded({extended:true}))
app.use(bodyParser.json()) // with this you can send the data to api in json format

app.get('/',(req,res)=>{
    res.send({
        "message":"API started"
    })
})

app.use('/api/',route)

mongoose.Promise = global.Promise
mongoose.connect(config.dbPath,{useNewUrlParser: true})
    .then(()=>{
        console.log("Db is connected")
    }).catch(err=>{
        console.log(err)
    })

app.listen(config.serverPort,()=>{
    console.log('server started')
})




const userModel = require('../models/userModel')

module.exports = {
    "registerUser": (req,res)=>{
        if(!req.body){
            res.status(400).send({
                "message": "User Detail Cannot be empty"
            })
        } else{
            const user = new userModel({
                name : req.body.name,
                email : req.body.email,
                password : req.body.password
            })
            user.save().then(data=>{
                res.status(200).send(data)
            }).catch(err=>{
                res.status(500).send({
                    "message": err.message || "Something went wrong"
                })
            })
        }
    },
    "login":(req,res)=>{
        res.send({
            "message":"This is an register method"
        })
    }
}

In your routes file, you can handle the POST request like,

var express = require('express');
var router = express.Router();

router.post('/', function(req, res, next) {
  // req.body will contain the body data.
  res.send('respond with a resource');
});

module.exports = router;

You need to register your route with express router. Your userRoute.js must look something like this.

var express = require('express');
var router = express.Router();



router.post("/registerUser", (req,res)=>{
        if(!req.body){
            res.status(400).send({
                "message": "User Detail Cannot be empty"
            })
        } else{
            const user = new userModel({
                name : req.body.name,
                email : req.body.email,
                password : req.body.password
            })
            user.save().then(data=>{
                res.status(200).send(data)
            }).catch(err=>{
                res.status(500).send({
                    "message": err.message || "Something went wrong"
                })
            })
            res.send(req.body)
        }
    });


router.post("/login", (req,res)=>{
       res.send({
            "message":"This is an register method"
        })
   });




module.exports = router;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM