POST请求中没有正文

我正在进行networking推送通知项目。 我想从我的客户端发送用户订阅到节点服务器。

客户端代码

function sendSubscriptionToBackEnd(subscription) { return fetch('/api/save-subscription/', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(subscription) }); } 

服务器端代码

 app.post('/api/save-subscription/', function (req, res) { console.log(req.body); } 

订阅对象是带有“端点”和“键”的标准订阅。 我已经尝试在发送之前打印客户端上的订阅,它似乎是有效的。

问题是服务器端的“req”对象不包含任何“body”键。 所以,我不知道如何在服务器端获取订阅。

如果你还没有,你可能需要body-parser中间件。

这是parsingHTTP请求的主体,并给你一个很好的parsing对象来处理。

在你的服务器端代码中:

 const bodyParser = require('body-parser'); const express = require('express'); const app = express(); app.use(bodyParser.json()); // <-- this guy! app.post('/api/save-subscription', (req, res) => { console.log(req.body); return res.sendStatus(201); });