【问题标题】:Express post endpoint receiving empty body快递端点接收空正文
【发布时间】:2021-10-15 06:55:06
【问题描述】:

更新

看起来第 3 方应用正在使用 Content-Type: text/json 发送数据。我需要弄清楚如何配置快速中间件以接受*/* Content-Type


我正在尝试在 Express 中公开一个端点以接收来自 3rd 方应用程序的发布请求(webhook 通知)。本质上,当用户点击 3rd 方应用程序中的按钮时,它会向 express 端点发送一个带有数据的 post 请求。

这是我的代码的样子:

app.use(express.json()); // for parsing application/json
app.use(express.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

    app.post('/notify', (req, res, next) => {
        if (!req.body) {
            return res.status(400).send('Bad Request');
        }

        console.log(req.body);
        res.sendStatus(200);
    });

当我使用 Postman (Postman w/ payload --> My Endpoint) 向此端点发帖时,一切正常,req.body 中的有效负载包含数据。

当第 3 方数据发布到此端点 (带有效负载的第 3 方 --> 我的端点) 时,正文不包含任何内容,并且在记录时会打印 {}

如果我使用像 https://webhook.site 这样的在线工具从第 3 方 (第 3 方 w/ payload --> Webhook 测试站点)接收数据,则整个有效负载都存在于 @ 987654330@.

我不知道为什么它不起作用,并尝试多次更改中间件。

我尝试了以下链接,但都没有成功。

Express app empty request body with custom content type headers

Express receiving empty object

Node.js: Receiving empty body when submitting form.

【问题讨论】:

    标签: node.js express post server webhooks


    【解决方案1】:

    问题是第 3 方应用程序正在发送内容类型标头为 text/plain 的原始 json 数据。我解决了这个问题:

    app.use(express.json({ type: '*/*' })); 
    

    【讨论】:

      猜你喜欢
      • 2016-06-24
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      • 2019-05-02
      • 2021-12-19
      相关资源
      最近更新 更多