【发布时间】:2015-02-14 19:22:39
【问题描述】:
我使用命令curl -H "Content-Type: application/json" -d '{"name":"sparc_core","port":["p1", "p2"]}' http://127.0.0.1:3000/add_module 来测试nodejs 服务器。
一开始我的代码如下:
app.post('/add_module', bodyParser.json());
app.post('/add_module', bodyParser.urlencoded());
app.post('/add_module', function(req, res, next) {
req.body = JSON.parse(req.body.data);
next();
});
app.post('/add_module', function(req, res) {
console.log("Start submitting");
console.log(req.body);
... ...
我运行 curl 命令后,节点服务器输出错误信息如下:
SyntaxError: Unexpected token u
在 Object.parse(本机)
在 Object.app.post.res.send.error [作为句柄] (/home/xtec/Documents/xtec-simict/sim/app.js:80:21)
在 next_layer (/home/xtec/Documents/xtec-simict/sim/node_modules/express/lib/router/route.js:103:13)
在 Route.dispatch (/home/xtec/Documents/xtec-simict/sim/node_modules/express/lib/router/route.js:107:5)
在 /home/xtec/Documents/xtec-simict/sim/node_modules/express/lib/router/index.js:205:24
在 Function.proto.process_params (/home/xtec/Documents/xtec-simict/sim/node_modules/express/lib/router/index.js:269:12)
在下一个(/home/xtec/Documents/xtec-simict/sim/node_modules/express/lib/router/index.js:199:19)
在 next_layer (/home/xtec/Documents/xtec-simict/sim/node_modules/express/lib/router/route.js:77:14)
在 Object.urlencodedParser [作为句柄] (/home/xtec/Documents/xtec-simict/sim/node_modules/body-parser/index.js:67:27)
在 next_layer (/home/xtec/Documents/xtec-simict/sim/node_modules/express/lib/router/route.js:103:13)
POST /add_module 500 7ms - 1021b
然后,我修改代码如下:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.post('/add_module', function(req, res) {
console.log("Start submitting");
console.log(req.body);
... ...
我运行相同的 curl 命令,它工作正常!
所以我想知道 app.use 和 app.post 之间的区别。需要您的帮助,非常感谢。
【问题讨论】:
标签: javascript node.js curl express