如何使用node.js中的请求库来获取原始的HTTP消息主体?

问题描述 投票:0回答:3
npm

request库允许我使用良好的JSON风格语法构造HTTP请求。 request.post( { url: 'https://my.own.service/api/route', formData: { firstName: 'John', lastName: 'Smith' } }, (err, response, body) => { console.log(body) } );

但要进行故障排除,我确实需要看到
雷格斯特的HTTP消息正文,因为它会出现在电线上。理想情况下,我正在寻找带有node.js

Buffer对象的原始字节表示。对于响应而不是请求似乎很容易。我对multipart/form-data

。
我已经浏览了文档和github问题,无法弄清楚。
    
简单的方法是在任何端口上启动NetCat服务器:

$ nc -l -p 8080

javascript node.js http npm-request
3个回答
6
投票

https://localhost:8080/v1beta1/text:synthesize?key=API_KEY

现在,提出的任何请求都将打印整个已发送到Localhost Server的原始HTTP消息。

明显地,您将无法看到响应,但是整个原始请求数据都可以供您在终端中进行检查。

我想出了如何用请求倾倒HTTP消息主体。在这两种情况下,我都只是复制了使用
internally的相同方法。

Multipart形式上传

request


4
投票

req._form.pipe(process.stdout);

    
我可以想到多种查看请求字节的方法:

在请求模块中调试进行调试。  有多种方法可以完成记录的
here

,包括设置

console.log(req.body);
NODE_DEBUG=request

0
投票
request-debug模块。

使用网络嗅探器查看实际上在套接字上发送的内容,而与您的node.js code无关。
  1. 创建您自己的虚拟http服务器,该服务器除了记录确切的传入请求并将相同的请求发送给该虚拟服务器,以便您可以为您记录。

    创建或使用代理(例如NGINX),该代理可以在将其转发到最终目的地并将请求发送到代理之前,然后将其转发到确切的传入请求。

    通过在调试器中发送请求,以确切查看其写入套接字的内容(这可能很耗时,尤其是在异步回调的情况下,但最终将起作用)。
    
    
    您可以尝试 @jfriend00建议使用网络嗅探器,例如Wireshark,但是当您获取require('request').debug = trueURL时,这可能不是最简单的路线,因为它需要一些设置来拦截TLS Connections。
    
    

    因此,也许可以为请求模块本身打开调试模式,您可以通过简单地设置
  2. https
  3. 来完成此操作。作为第三个选项,您可以使用请求

    HERHE的专用调试模块,该模块可让您查看请求和响应标头和身体。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.