如何在node.js程序中查看整个请求和响应对象?

如何在node.js程序中查看整个请求和响应对象?,node.js,http,express,Node.js,Http,Express,我已经用nodejs编写了一个web服务器。大多数时候,我从一个服务接收消息,做一些事情,然后向另一个服务发送消息。我在所有的交流当中。 有时,通信会失败。我正在调试正在发生的事情。我想检查收到的请求 我有一个用express编写的节点服务。我有路由,路由被传递给一个req对象和一个resp对象。我应该能够打印出req对象。问题解决了 但是JSON.stringify抛出了一个错误。util.inspect不会引发错误,但许多属性值都标记为[circular]。未显示实际的属性值 当我输入con

我已经用nodejs编写了一个web服务器。大多数时候,我从一个服务接收消息,做一些事情,然后向另一个服务发送消息。我在所有的交流当中。 有时,通信会失败。我正在调试正在发生的事情。我想检查收到的请求

我有一个用express编写的节点服务。我有路由,路由被传递给一个req对象和一个resp对象。我应该能够打印出req对象。问题解决了

但是JSON.stringify抛出了一个错误。util.inspect不会引发错误,但许多属性值都标记为[circular]。未显示实际的属性值

当我输入console.log(req.body)时,它会打印未定义的内容。当我使用util.inspect查看req.body时,它会打印body:{}

我感觉框架在对我隐瞒事情。我不知道如何在不美化的情况下获得信息

在tcp/ip级别,它太详细了。在应用程序级别,它不够详细。但在http级别上,它应该是正确的。收到的请求只是文本。我应该可以把它打印出来

我尝试使用Charles,但配置时遇到问题


当然,其他人希望在框架对请求进行处理之前,在请求传入时看到它。他们是怎么做到的

您可以使用,它是一个HTTP请求记录器中间件,用于node.js

我提出了一个更具体的问题,使用了中间件的较低级别的节点堆栈。我得到了一个答案:

下面讨论了节点是如何以这种方式设计的:


基本上,节点中的请求对象过去有一个rawBody属性。人们把它拿了出来。要完成同样的任务,需要一点代码。

Hi,Nokey。我试过摩根。似乎想给我“详细”的信息。我使用了“apachecomposite”等工具,但无法得到我想要的。特别是,我发送的数据(我相信是在请求正文中)没有显示出来。我发送了“city=chicago”,但没有在日志中看到它。我知道它通过了,因为当我发送“city=atlanta”时,我在另一边得到了不同的结果。