我正在开展网络推送通知项目。我想将用户订阅从我的客户端发送到节点服务器。
客户端代码
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”键。所以,我不知道如何在服务器端获取订阅。
答案 0 :(得分:4)
如果您还没有body-parser
中间件,则可能需要它。
是什么解析了http请求的主体,并为您提供了一个很好的解析对象来处理。
在服务器端代码中:
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);
});