Outlook日历Webhook接收事件变更通知时请求体为空的问题
解决Express.js Webhook无法获取Microsoft Graph通知请求体的问题
核心原因:未配置JSON请求体解析中间件
Express.js 默认不会自动解析application/json格式的请求体,必须显式添加解析中间件才能让req.body正常获取到数据。解决步骤
- 在你的Express应用中,在Webhook路由之前添加
express.json()中间件:const express = require('express'); const app = express(); // 关键:先加载JSON解析中间件 app.use(express.json()); // 你的Webhook处理路由 app.post('/your-webhook-endpoint', (req, res) => { // 现在req.body应该能正确获取到Microsoft Graph的通知数据 console.log(req.body); // 记得返回202 Accepted响应给Graph API,避免重复通知 res.status(202).send(); }); app.listen(3000, () => console.log('Server running on port 3000')); - 若遇到大体积请求体(比如包含附件的事件通知),可以调整中间件的大小限制:
app.use(express.json({ limit: '2mb' })); // 根据需求调整限制值 - 确认你的路由使用的是
POST方法,Microsoft Graph的变更通知只会以POST请求发送到你的Webhook端点。
- 在你的Express应用中,在Webhook路由之前添加
额外排查点
如果你使用的是Express 4.16.0之前的版本,需要单独安装body-parser包并使用:npm install body-parser然后在代码中引入:
const bodyParser = require('body-parser'); app.use(bodyParser.json());
内容的提问来源于stack exchange,提问作者Alok
相关产品推荐
相关产品推荐

