Node.js: req.params vs req.body

req.params is for the route parameters, not your form data.

The only param you have in that route is _id:

app.put('/api/todos/:_id', ...)

From the docs:

req.params
This property is an object containing properties mapped to the named route “parameters”. For example, if you have the route /user/:name, then the “name” property is available as req.params.name. This object defaults to {}.

source: http://expressjs.com/en/4x/api.html#req.params

req.body
Contains key-value pairs of data submitted in the request body. By default, it is undefined, and is populated when you use body-parsing middleware such as body-parser and multer.

source: http://expressjs.com/en/4x/api.html#req.body


req.params is the part you send in the request url parameter or the header part of requests.

req.params example in postman

In example above req.params is the data we are sending in postman after ninjas in the 
url.


    route.delete('/ninjas/:id',function(req,res,next)
{
    Ninja.findByIdAndRemove({_id:req.params.id}).then(function(ninja)
    {
        console.log(ninja.toString());
        res.send(ninja);
    })
    .catch(next);

});

req.body is the part you send in body part of requests

req.body example in postman

req.body is the JSON data we are sending in postman so we can access it in the post request body part.

route.post('/ninjas',function(req,res,next)
{
    Ninja.create(req.body).then(function(ninja)
    {
        console.log("POST"+req.body);
    res.send(ninja);
    })
    .catch(next);

});