【问题标题】:how to print the data from post request on console如何在控制台上打印来自发布请求的数据
【发布时间】:2013-12-13 10:31:47
【问题描述】:

我正在尝试在控制台上打印发布数据


app.js

var express = require('express')
 , http = require('http');

var app = express();

app.set('port', process.env.PORT || 7002);

app.use(express.static(__dirname + '/public/images'));


app.post('/Details/',function(request,response,next){


app.use(express.bodyParser());

   var keyName=request.query.Key;
   console.log(keyName);

} );


http.createServer(app).listen(app.get('port'), function(){
 console.log('Express server listening on port ' + app.get('port'));
});

初始快照::


我用 POST-MAN 测试以下数据::


现在我得到错误::


  • 我只想打印我从邮递员那里收到的数据dev .....正在显示为undefined
  • 如何解决这个问题!

[Edit] ----在路由外添加body parser

var express = require('express')
 , http = require('http');

var app = express();

app.set('port', process.env.PORT || 7002);

app.use(express.static(__dirname + '/public/images'));

app.use(express.bodyParser());

app.post('/Details/',function(request,response,next){

   var keyName=request.query.Key;
   console.log(keyName);

} );


http.createServer(app).listen(app.get('port'), function(){
 console.log('Express server listening on port ' + app.get('port'));
});

还是有同样的错误

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    而不是query

    var keyName=request.query.Key;
       console.log(keyName);
    

    使用body:

    var keyName1=request.body.key;
    console.log(keyName1);
    

    代码:

    var express = require('express')
     , async = require('async')
     , http = require('http');
    
    var app = express();
    
    app.set('port', process.env.PORT || 7002);
    
    app.use(express.static(__dirname + '/public/images'));
    
    app.use(express.bodyParser());
    
    app.post('/Details/',function(request,response,next){
    
       var keyName1=request.body.key;
       console.log(keyName1);
    } );
    
    
    http.createServer(app).listen(app.get('port'), function(){
     console.log('Express server listening on port ' + app.get('port'));
    });
    

    【讨论】:

    • 我只是从服务器收到Cannot POST / 作为响应,控制台中没有打印任何内容
    • @izzy 那是因为您需要拥有app.post('/', ...) 才能处理/ 的发布请求。
    【解决方案2】:
    var express = require('express');
    var app = express();
    
    app.use(express.bodyParser());
    
    app.post('/post/', function(req, res) {
       // print to console
       console.log(req.body);
    
       // just call res.end(), or show as string on web
       res.send(JSON.stringify(req.body, null, 4));
    });
    
    app.listen(7002);
    

    【讨论】:

      【解决方案3】:

      当你有查询字符串参数时使用request.query

      对于表单/发布数据,请使用req.body

      在你的情况下,使用request.body.key

      【讨论】:

      • 它成功了,谢谢.. 我还发布了完整的解决方案
      【解决方案4】:

      关于使用中间件 body-parser 的更新,用于 Express 的更高版本:使用 app.use(express.bodyParser()) 将报告错误,例如: 错误:大多数中间件(如 bodyParser)不再与 Express 捆绑,必须单独安装。请参阅https://github.com/senchalabs/connect#middleware

      这可以通过首先安装body-parser 中间件来解决:

      npm install body-parser
      

      然后写代码如:

      var bodyParser = require('body-parser');
      app.use(bodyParser.json());
      app.use(bodyParser.urlencoded({ extended: true }));
      

      然后访问request对象的body,例如console.log(req.body)

      【讨论】:

        【解决方案5】:

        你不能在中间件/路由处理程序中调用app.use(express.bodyParser());

        • 请求应该在到达路由处理程序之前通过bodyParser()
        • 您将在每个请求中添加新的 bodyParser()s,但它们将在 app.router 之后并且永远不会工作

        【讨论】:

        • @vkurchatkin ........请查看编辑......我仍然有同样的错误,任何输入?
        【解决方案6】:

        使用内置函数“util”在express js中打印任何类型的json数据

        var util = require("util");
        console.log(util.inspect(myObject, {showHidden: false, depth: null}));
        

        【讨论】:

          猜你喜欢
          • 2020-09-03
          • 1970-01-01
          • 1970-01-01
          • 2023-02-13
          • 2012-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-02
          相关资源
          最近更新 更多