gpt4 book ai didi

haskell - 如何在 WAI/scotty 中记录整个 HTTP 请求?

转载 作者:行者123 更新时间:2023-12-04 01:11:32 25 4
gpt4 key购买 nike

我目前从 Network.Wai.Middleware.RequestLogger 运行中间件 logStdoutDev,但它只记录路径和 Accept header (也可能是其他 header )。我也想查看 POST 和 PUT 请求的正文。这个主体恰好是 json,所以只需将其打印到标准输出就可以了。

我已经搜索了一个 WAI 中间件,它记录了所有内容但没有找到任何内容。我对 WAI 内部的了解还不够,无法编写一些提取 POST 正文然后将其放回自己的东西,所以我希望现在能避免这种学习曲线。

最佳答案

Middleware只是对 Application 的转换:

type Middleware = Application -> Application

Application只是一个处理程序:
type Application = Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived

您需要做的就是定义处理程序,它将记录您想要的任何内容并将“实际工作”委托(delegate)给下游:
-- note that this is equivalent to Application -> Application
logAllMiddleware :: Application -> Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived
logAllMiddleware app req respond = do
print . unpack . requestBody req
app req respond

请记住,我在没有访问 ghc 的情况下编写了此代码。它可能并不完全正确。

关于haskell - 如何在 WAI/scotty 中记录整个 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16337989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com