问题描述
在servant/wai 应用程序中,可以使用组合器获取请求主体,例如ReqBody '[JSON] Book
。在这种情况下,主体被提取为 Book
类型的值。目前尚不清楚如何在不将其转换为类型的情况下访问原始请求正文。可能需要原始请求正文来验证其签名。一个例子是在 stripe webhooks(即 stripe.com)中,可能需要原始请求正文进行验证。 hackage.org (stripe-hs) 上有一个不错的库,可以进行此验证,但没有解释如何获取原始请求正文。我想一种方法是通过一个中间件,请求主体可以被消费一次。还有其他办法吗?
解决方法
我最终要做的是为该数据类型创建一个新的数据类型 data WebhookJSON
及其对应的 MimeUnrender 和 MimeRender 实例。就像它为 JSON
类型所做的那样。我在组合器中使用了该数据类型,例如ReqBody '[WebhookJSON] ByteString
。希望(我还没有测试过),这是访问原始请求正文的一种方法。