如何在服务应用程序中访问原始请求正文

问题描述

在servant/wai 应用程序中,可以使用组合器获取请求主体,例如ReqBody '[JSON] Book在这种情况下,主体被提取Book 类型的值。目前尚不清楚如何在不将其转换为类型的情况下访问原始请求正文。可能需要原始请求正文来验证其签名。一个例子是在 stripe webhooks(即 stripe.com)中,可能需要原始请求正文进行验证。 hackage.org (stripe-hs) 上有一个不错的库,可以进行此验证,但没有解释如何获取原始请求正文。我想一种方法是通过一个中间件,请求主体可以被消费一次。还有其他办法吗?

解决方法

我最终要做的是为该数据类型创建一个新的数据类型 data WebhookJSON 及其对应的 MimeUnrender 和 MimeRender 实例。就像它为 JSON 类型所做的那样。我在组合器中使用了该数据类型,例如ReqBody '[WebhookJSON] ByteString。希望(我还没有测试过),这是访问原始请求正文的一种方法。