17

我正在编写一些调用外部 Web 服务的 node.js 代码,但结果很糟糕。我想记录原始请求和响应,以便我可以检查它。

事情是这样的: 我没有直接使用 http 库,而是通过 OAuth 库使用它。

我已经在 oauth 库代码中添加了调试语句,但我不喜欢它。现在看起来我将不得不进入 http 库并开始搞乱它?这不可能是正确的。

如果我在窗户上,我会启动提琴手。一位朋友提到了wireshark,但wireshark告诉我必须安装X11。真的吗?我不会去那个兔子洞。

然后我尝试了节点检查器,但我认为这是针对服务器代码而不是客户端代码。它说您假设在附加之前启动您的节点进程。好吧,我的节点进程是一个测试用例(誓言),它在开始后不久就结束了......所以那里没有运气。

我想这对于任何堆栈都很难,但天哪,这让我想念.net!

那么,在将 node.js 用作山狮外部 Web 服务的客户端时,我如何检查线路上发生了什么?

谢谢!担

4

2 回答 2

36

http出于同样的原因,设法在/https请求上安装了一个钩子。

function requestLogger(httpModule){
    var original = httpModule.request
    httpModule.request = function(options, callback){
      console.log(options.href||options.proto+"://"+options.host+options.path, options.method)
      return original(options, callback)
    }
}

requestLogger(require('http'))
requestLogger(require('https'))
于 2014-12-11T21:22:59.703 回答
9

您可以查看global-request-logger模块,该模块使用 @uiron 提到的相同技术,但具有更多详细信息。

于 2015-04-23T22:55:12.463 回答