在Express.js中解析JSON时,未定义主体

时间:2014-02-19 19:31:25

标签: json node.js express

我有一个简单的服务器,我只是在发布时将json打印到屏幕上。这是我的代码:

/*jslint node:true*/

var express = require('express');
var app = express();
app.use(express.json());
app.use(app.router);

app.post('/event', function (res, req) {
    //'use strict';
    console.log(req.body);
});

app.listen(3000);

然后我用服务器将一个JSON放到服务器上:

curl -X POST -H "Content-Type: application/json" -d '{"username":"xyz","password":"xyz"}' http://localhost:3000/event

但服务器只打印undefined

我做错了什么?

2 个答案:

答案 0 :(得分:5)

你还没有定义用法 express.bodyParser()

必须这样做:

app.use(express.bodyParser());

直播示例: 模块路由文件

exports.post = function(req, res){
    console.log(req.body);
    //res.render('index', { title: 'Express' });
};

应用程序:

app.post('/post', routes.post);

小提琴手请求:

enter image description here

来自评论的

:如果您有最新的库,您应该考虑从Connect 3.0弃用bodyParser。适当的主题:How to get rid of Connect 3.0 deprecation alert?

答案 1 :(得分:2)

我只知道问题所在。它应该是:

function (req, res)

而不是:

function (res, req)

因为第一个参数是请求,第二个参数是响应。