无法弄清楚使用正文解析器的正确方法

时间:2015-05-17 23:34:53

标签: node.js express body-parser

我正在使用node和express编写一个简单app的后端。这就是我构建代码的方式:

app.js

var express = require("express");
var bodyParser = require("body-parser");
var app = express();
app.use(bodyParser.json());
var router = require('./router')(app);

app.listen(80,function(){
    console.log("Started on PORT 80");
})
module.exports = app;

在子目录/路由器下我有 index.js

module.exports = function (app) {
    app.use('/login', require('./routes/login'));
};

在/ router / routes下我有 login.js

var express = require('express');
var router = express.Router();
router.post('/', function(req, res){
    var user = req.body.user;
    console.log("Handler for /login called");
    console.log("The username is: "+ user);
});
module.exports = router;

我正在使用

进行测试
curl -X POST -d '{"user":"alpha", "password":"beta"}' http:my-app-ip/login --header "Content-Type:application/json"

控制台打印The username is: undefined而不是关键用户的值。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您可以使用util.inspect()获取值的字符串表示形式,或使用console.dir(req.body)util.inspect(req.body)输出到stdout。

答案 1 :(得分:0)

你没有做错任何事。您看到的[Object object]是由console.log引起的。

试试这个:console.log(req.body.user)。我的猜测是你会看到正确的输出。

看看this question但是