【问题标题】:Express: trying to get JSON data from POST requestExpress:尝试从 POST 请求中获取 JSON 数据
【发布时间】:2017-01-31 02:41:06
【问题描述】:

我有一个 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 发送一个带有 key: student_id 和 value: 123 的 POST 请求。但是,console.log(req.body['student_id']); 正在打印未定义。 打印 req.body 只返回 {}。怎么了?

【问题讨论】:

  • 正如标题所暗示的那样,您不会从该 POST 请求中收到任何 JSON。
  • 你能解释一下吗?您的意思是 POST 请求不包含 JSON 或者我不会收到任何内容?如何接收 JSON?

标签: json node.js express


【解决方案1】:

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

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);

我相信您可以将其整合到您自己的解决方案中。

【讨论】:

  • 那么问题出在哪里?
  • 我不想使用 url 编码,我想使用 JSON 数据。我在问题中的代码是使用 bodyParser,但我没有收到 JSON 数据。
  • 您尚未将快速路由配置为在代码中使用正文解析器实例。请注意 Gulbrandsen 回复中的上述行:app.use(bodyParser.json())。在您的代码中,您刚刚实例化了它,但尚未将其连接到您的 express 应用程序变量。
【解决方案2】:

我的问题与邮递员有关。我没有正确发送 JSON 数据。

【讨论】:

    猜你喜欢
    • 2021-11-29
    • 2020-08-15
    • 2013-12-20
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 2017-10-06
    • 2019-11-26
    • 2018-02-18
    相关资源
    最近更新 更多