我需要从Nest.js应用程序中的Stripe访问webhook请求的原始正文。
在此示例之后,我将以下内容添加到具有需要原始主体的控制器方法的模块中。
function addRawBody(req, res, next) {
req.setEncoding('utf8');
let data = '';
req.on('data', (chunk) => {
data += chunk;
});
req.on('end', () => {
req.rawBody = data;
next();
});
}
export class SubscriptionModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(addRawBody)
.forRoutes('subscriptions/stripe');
}
}
Run Code Online (Sandbox Code Playgroud)
在控制器中,我正在使用@Req() req然后req.rawBody获取原始主体。我需要原始主体,因为Stripe api的constructEvent正在使用它来验证请求。
问题是请求被卡住了。似乎没有为数据或结束事件调用req.on。因此next()在中间件中不被称为。
我也确实尝试过raw-body像这里一样使用,但是得到的结果几乎相同。在这种情况下,req.read总是错误的,所以我也被困在那里。
我想这是Nest.js的问题,但我不确定...