node.js express.js发布数据

时间:2015-11-27 02:56:41

标签: express body-parser

我在获取客户端POST数据时遇到了以下问题:

我的客户发送了:

content-type:application/x-www-form-urlencoded

内容:

{"value":"123456"}

在node.js中,将内容解析为json对象没问题,我的代码如下:

http.createServer(function onRequest(request, response) {               
    request.setEncoding("utf8");
    var content = [];

    request.addListener("data", function(data) {
        content.push(data); //Collect the incoming data});

    //At the end of request call
    request.addListener("end", function() {
    response.writeHead( 200, {"Content-Type": "text/plain"} );
    ms = content[0];
    if(ms.toString() != "")
    {
        var msg = ms.toString();    //Parse the ms into string      
        console.log(msg); // Prints the message in the console
        var reqObj = JSON.parse(msg);   // If the incoming message is in JSON format, it can be parsed as JSON.
        console.log(reqObj); 
        response.end(); //Close the response
    }
});

以上代码的输出:         {" account":" 48264"} //在解析为JSON之前         {account:' 48264' } //解析为JSON后

但是当我改成express.js并使用bodyParser时,它就混淆了。

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.post('/', function(req, res, next) {
    req.setEncoding('utf8');
    console.log(req.body);
    console.log(req.body.value);
});
module.exports = router;

控制台中的上述输出如下:

{ "{\"account\": \"123456\"}": "" }
undefined

我在网上搜索,但无法找到解决方案。请帮忙。 提前致谢

1 个答案:

答案 0 :(得分:2)

在定义任何路由之前,您需要使用快速正文解析器中间件。

str = '12:00:00:12';
str.substring(0,str.length-6);