【问题标题】:How can I see the whole request and response object in a node.js program?如何在 node.js 程序中查看整个请求和响应对象?
【发布时间】:2017-02-07 04:30:56
【问题描述】:

我在 nodejs 中编写了一个 Web 服务器。大多数时候,我从一个服务接收消息,做某事,然后将消息发送到另一个服务。我处于所有沟通的中间。

有时,通信失败。我正在尝试调试正在发生的事情。我想检查进来的请求。

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

但是 JSON.stringify 会抛出错误。 util.inspect 不会抛出错误,但许多属性值都标记为 [循环]。未显示实际属性值。

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

我感觉框架对我隐瞒了一些事情。我不知道如何在没有美化的情况下获取信息。

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

我尝试使用 Charles,但无法配置它。

当然,在框架处理请求之前,其他人希望看到请求的到来。他们是如何做到的呢?

【问题讨论】:

    标签: node.js http express


    【解决方案1】:

    您可以使用morgan module,它是node.js 的HTTP 请求记录器中间件

    【讨论】:

    • 嗨,诺基。我试过摩根。似乎想给我“归结”的信息。我使用了“Apache 组合”等,但无法得到我想要的。特别是,我发送的数据(我相信在请求正文中)没有显示出来。我发送了“city=chicago”,但在日志中没有看到。我知道它通过了,因为当我发送“city=atlanta”时,我在另一边得到了不同的结果。
    【解决方案2】:

    我提出了一个更具体的问题,使用较低级别的中间件节点堆栈。我在那里得到了答案:
    Where did the information I passed in go?
    以下是关于如何以这种方式设计节点的讨论:
    Node.js - get raw request body using Express
    基本上,节点中曾经有一个请求对象的 rawBody 属性。人们把它拿出来了。完成同样的事情需要一点代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 2015-01-16
      • 2012-05-22
      • 1970-01-01
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      相关资源
      最近更新 更多