使用 http-proxy-middleware 记录请求/响应主体

fga*_*lan 11 node.js http-proxy-middleware

我正在使用http-proxy-middleware来实现透明代理。

我想做请求/响应检查。我的意思是,我想打印通过代理的文本文件请求/响应,而不对其进行任何修改。

到目前为止,我使用的是这样的(简化版):

app.use('/proxy/:service/', proxy({
        pathRewrite: function(path, req){
            ...
        },
        router: function(req) {
            ...
        },
        onProxyRes: function(proxyRes, req, res) {
            log("Req URL: " + req.originalUrl);
            log("Response status code: " + proxyRes.statusCode);
        }
}));
Run Code Online (Sandbox Code Playgroud)

log()是一个帮助函数,它使用字符串作为输入并打印它是我的日志文件)

因此,基本上我正在使用onProxyRes拦截响应并在那时进行日志记录。问题是我只能使它适用于 URL、状态代码、标题等,但我没有在req和/或resProxy对象中找到有效负载正文。

我已阅读有关如何在此处获取res尸体的信息。然而,这似乎是一个复杂的解决方案(需要设置一个data事件处理程序)。req据我所知,它没有覆盖身体。

任何提示/帮助/参考都非常感谢,请。不确定使用onProxyRes是否是实现这一点的最佳方式,也许库提供了一些功能来涵盖请求/响应情况。

Dan*_*ews 0

如果您想要req.body,则必须使用库来获取它(或自己从流中构建它)。我推荐身体解析器

  • 感谢您的反馈!我查看了 body-parser 的链接,但是在 onProxyRes 中使用它的方式对我来说并不简单......请问您有任何示例代码或链接吗? (2认同)