You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过$http POST传递对象参数并在Node.js服务中获取

解决POST请求数据无法在服务端获取的问题

我来帮你排查一下问题所在,主要有几个关键点需要修正:

1. 路由路径不匹配

客户端请求的路径是 /users,但服务端监听的是 /api/users,两者不一致,这会导致请求根本没走到对应的处理逻辑里。

2. 客户端的Promise反模式 + 不必要的JSON序列化

你手动创建了deferred对象,但$http.post本身就返回一个Promise,完全不需要额外包装。另外,Angular的$http服务会自动将JavaScript对象序列化为JSON并设置正确的Content-Type: application/json请求头,手动调用JSON.stringify反而可能导致解析问题。

修改后的客户端代码:

return $http.post(appSettings.baseUrl + '/api/users', {name:"Alex", age:"34"})
  .then(function (response) {
    return response.data;
  })
  .catch(function (error) {
    throw new Error('Failed to connect');
  });

3. 服务端缺少JSON请求体解析中间件

在Node.js/Express中,默认不会自动解析JSON格式的请求体,你需要使用body-parser中间件来处理。

首先安装依赖:

npm install body-parser --save

然后在服务端代码中引入并配置:

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

// 解析JSON格式的请求体
app.use(bodyParser.json());

// 修正路由路径,和客户端保持一致
app.post('/api/users', function (req, res) {
  // 数据直接在req.body里,不需要取postData
  const user = req.body;
  console.log(user); // 现在应该能看到{name: "Alex", age: "34"}
  // 后续处理逻辑...
  res.status(200).json({message: 'User received', user: user});
});

4. 服务端错误的取值方式

你之前尝试取req.body.postData,但客户端发送的是直接的用户对象,并没有嵌套在postData字段里,所以直接访问req.body就能拿到完整的用户数据。

按照上面的步骤修改后,应该就能正常获取到POST传递的数据了。

内容的提问来源于stack exchange,提问作者Jijo Cleetus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:03:21