【问题标题】:express POST req.body parser is emptyexpress POST req.body 解析器为空
【发布时间】:2017-07-27 12:06:20
【问题描述】:

我在 Stack Overflow 上看到了类似的问题,并找到了使用的解决方案:

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

但是在打印日志时req.body是空白的。

app.js 内容:

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

// Define the port to run on
app.set('port', 8888);

app.use(express.static(path.join(__dirname, '/webapp/public')));

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

app.post('/getsolution', function (req, res) {
    console.log("request body is",req.body); //----req.body is blank here
});

来自 Angular 的发布请求代码如下

var parameters = JSON.stringify({ "urlPath": $location.path()});
$http.post('http://localhost:8888/getsolution/', parameters)
    .then(function (response) {
        if (response.data == "") {
            $window.location.href = 'http://localhost:8888/';
        } else {
            $scope.puzzle = response.data;
            $scope.puzzleSolution = response.data.solution;
        }
    }).catch(function onError(response) {
    $window.location.href = 'http://localhost:8888/';
});

控制台上的日志打印是

请求正文是 {}

当使用下面的 sn-p 时它不起作用

var app = angular.module('puzzleappsolution', [], function ($locationProvider) {
    $locationProvider.html5Mode(true);
 });//----->It is now working

但在下面使用时它可以工作

var app = angular.module('puzzleappsolution', []);

【问题讨论】:

  • @Sam 感谢正确的缩进
  • 你试过包含bodyparser.raw吗?
  • @JefreeSujit 试过了,但没用

标签: javascript angularjs node.js express


【解决方案1】:

Content-Type 标头添加到您的角度请求中:

$http.post('http://localhost:8888/getsolution/', parameters, {
    headers: {
        'Content-Type': 'application/json'
    }
})

【讨论】:

  • 谢谢。我不知道还有什么问题。我在本地运行您的代码,它可以工作。我只需要添加app.listen(8888) 即可启动服务器,但我猜你只是从代码 sn-p 中删除了它。
  • 我更新了我的问题并添加了几行。请帮助我为什么它在两种情况下的行为都不同。我也想使用 $locationProvider 变量来获取位置路径。
  • 抱歉,我不知道为什么 $locationProvider 会改变 $http 的行为。
猜你喜欢
  • 2018-04-30
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 2016-02-15
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 2020-01-08
相关资源
最近更新 更多