【问题标题】:How to unserialize JSON data in Express/Node.js如何在 Express/Node.js 中反序列化 JSON 数据
【发布时间】:2013-11-14 01:30:46
【问题描述】:

所以我有一个控制器内的客户端:

 $scope.authenticate = function() {
            var creds = JSON.stringify({email: this.email, password: this.password});
            $http.post('/authenticate', creds).
                success(function(data, status, headers, config) {
                   // etc
                }).
                error(function(data, status, headers, config) {
                  // etc
                });
        };

在服务器端:

app.post('/authenticate', function(req, res) {
    console.log("Unserialized request: " + JSON.parse(req));
});

但是当我尝试解析请求时出现错误。我不知道为什么。有什么想法吗?

【问题讨论】:

  • 您可能不想解析请求对象本身。您想解析正文中的字段(req.body 或 req.body.whatever)

标签: javascript node.js angularjs express


【解决方案1】:

使用 express.bodyParser 中间件,该中间件将为您进行解析并为您提供 req.body 作为准备就绪的对象。

var express = require('express');

app.post('/authenticate', express.bodyParser(), function(req, res) {
    console.log("Unserialized request: " + req.body);
});

【讨论】:

    【解决方案2】:

    为了完成 Peter Lyons 的回答,我认为你可以使用 express.bodyParser(),但如果你使用会更好

    [express.urlencoded(), express.json()]
    

    代替

    express.bodyParser()
    

    app.post('/authenticate', [express.urlencoded(), express.json()], function(req, res) {
    console.log("request body= " + req.body);
    });
    

    它还负责解析请求。但是,它更安全,因为您只需要 json 而不需要任何文件。如果您使用 bodyParser,任何人都可以将文件发送到您的发布请求。

    【讨论】:

    • 已阅读有关此问题的几个问题,这是唯一适用于新版本的解决方案。谢谢!
    猜你喜欢
    • 2013-08-17
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多