【问题标题】:Why doesn't my Express route handler have req.body values?为什么我的 Express 路由处理程序没有 req.body 值?
【发布时间】: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.usernameundefined

[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


【解决方案1】:

谢谢布雷克斯...我需要像这样卷曲:curl -H "Content-Type: application/json" -X POST -d '{"username":"xyz","password":"xyz"}' 172.17.0.12:3000/user/add

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    相关资源
    最近更新 更多