Express:尝试从POST请求中获取JSON数据

时间:2017-01-30 18:23:47

标签: json node.js express

我有一个nodeJS服务器。我希望能够接收POST请求并从中读取JSON数据。

/**
 * Created by daniel on 27/01/17.
 */

    const pug = require('pug');
    var cloudinary = require('cloudinary');
    var express = require('express');
    var multer  = require('multer');
    var upload = multer({ dest: 'uploads/' });
    var request = require('request');
    var https = require('https');
    var fs = require('fs');
    var morgan = require('morgan');
    var bodyParser = require('body-parser');


    var app = express();
    var jsonParser = bodyParser.json();

https.createServer({
    key: fs.readFileSync('key.pem'),
    cert: fs.readFileSync('cert.pem')
}, app).listen(3000);

cloudinary.config({
        cloud_name: 'INSERT-CLOUD-NAME-HERE',
        api_key: 'INSERT-KEY-HERE',
        api_secret: 'INSERT-SECRET-HERE'
    });



app.get('/', function (req, res) {
    res.header('Content-type', 'text/html');
    return res.end('<h1>Hello, Secure World!</h1>');
});

    app.post('/', jsonParser, function(req, res){
        student_id = req.body['student_id'];
        console.log(req.body['student_id']);

        res.header('Content-type', 'text/html');
        return res.end('<h1>' + student_id + '<h1>');

    });

我正在使用Postman发送一个带有密钥的POST请求:student_id和值:123。但是,console.log(req.body['student_id']);正在打印未定义。 打印req.body只返回{}。怎么了?

2 个答案:

答案 0 :(得分:0)

最好的方法是使用正文解析器中间件来解析传入的对象。这是一个例子:

var bodyParser = require('body-parser');
var app = require('express')();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

//Now you can just access the json in the body of the request
app.post('/', function(req, res) {
  res.send(req.body);
}

app.listen(3000);

我相信您可以将其纳入您自己的解决方案中。

答案 1 :(得分:0)

我的问题在于邮差。我没有正确发送JSON数据。