【发布时间】:2015-12-06 05:11:43
【问题描述】:
我这样发出这个 POST 请求:
$ curl -H Content-Type: application/json -X POST -d "{'username':'xyz','password':'xyz'}" http://172.17.0.12:3000/user/add
这由我的node.js 代码处理:
[root@02ffc47edbb8 mynodeapp]# cat routes/user.js
var express = require('express');
var mongoose = require('mongoose');
var bp = require('body-parser');
var router = express.Router();
var jsonParser = bp.json();
var urlencodedParser = bp.urlencoded({ extended: false });
//Mongo stuff
mongoose.connect('mongodb://172.17.0.13/test');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
console.log( 'connected to the mongodb://172.17.0.13/test');
});
var userSchema = mongoose.Schema({
username: String,
password: String,
});
var user = mongoose.model( 'User', userSchema );
/*
* curl -H Content-Type: application/json -X POST -
* d '{username:xyz,password:xyz}' http://172.17.0.11:3000/user/add
*/
/* add user */
// router.post('/add', function (req, res) {
router.post('/add', jsonParser, function (req, res) {
// console.log(req);
console.log(req.body.username);
if ( !req.body) return res.sendStatus(400);
var newUser = new user({ username: 'fluffy', password: 'a' });
newUser.save();
res.send('respond with a resource see http://expressjs.com/api.html#app.post.method');
});
module.exports = router;
但我服务器上的输出显示req.body.username 是undefined。
[root@02ffc47edbb8 mynodeapp]# DEBUG=simplist-app:* npm start
> mynodeapp@0.0.0 start /mynodeapp
> node ./bin/www
connected to the mongodb://172.17.0.13/test
undefined
POST /user/add 200 12.466 ms - 73
谁能告诉我我做错了什么?
谢谢!
【问题讨论】:
-
你忘了用 curl
curl -H "Content-Type: application/json"引用标题信息 -
是的,谢谢...我需要像这样卷曲:` curl -H "Content-Type: application/json" -X POST -d '{"username":"xyz", "密码":"xyz"}' 172.17.0.12:3000/user/add`
-
在 curl 中包含
-d时不需要定义-X POST
标签: node.js mongodb rest express