无法在NodeJS中从Angular应用中获取POST数据

Can't get POST data in NodeJS from Angular app

本文关键字:获取 POST 数据 应用 Angular NodeJS 中从      更新时间:2023-09-26

我无法从我从Angular应用程序中制作的POST方法中获得参数。我试图在这里寻找答案,甚至复制/粘贴一些示例,但似乎没有任何作用。

Node代码:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static('public_html'));
app.post('/test', function (request, response) {
  console.log(request.body.name)
  response.status(201).json(request.body.name);
});
app.listen(8787,function() {
    console.log('Listening on 8787');
});
Angular代码:

美元范围。postData = function() {

    $http.post('/test',{name: $scope.name}).success(function(data,status) {
        console.log('SUCCESS: ' + status);
        console.log(data);
    }).error(function(error) {
        console.log('ERROR');
        console.log(data);
    })
}

我可以在开发人员工具的网络面板上看到数据被发送,我甚至得到了201的http代码,但我没有得到回复。在NodeJS的post路由的console.log()中,我也没有定义。似乎身体解析器不工作或我错过了其他东西。

angular的$http.post函数将发送一个JSON body,而不是一个urlencoded body。

添加这个中间件来解析JSON对象:

app.use(bodyParser.json());

我也遇到过同样的问题,我是这样解决的。

修改这部分

response.status(201).json(request.body.name);

response.write(request.body.name);

response.end();

我希望它能解决你的问题。但我不确定它为什么有效。我希望有人解释一下。