POST 请求中没有正文

Ani*_*oel 2 json node.js server

我正在研究一个网络推送通知项目。我想将用户订阅从我的客户端发送到节点服务器。

客户端代码

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

服务端代码

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

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

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

Kri*_*ekk 5

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);
});
Run Code Online (Sandbox Code Playgroud)

  • 我们一度都是新手 - 祝您学习顺利! (2认同)