如何使用 Node.js 中的请求库获取原始 HTTP 消息正文?

Nic*_*Nic 5 javascript http node.js npm-request

NPM-请求库允许我建立HTTP使用一个很好的JSON风格的语法要求,是这样的。

request.post(
    {
        url: 'https://my.own.service/api/route',
        formData: {
            firstName: 'John',
            lastName: 'Smith'
        }
    },
    (err, response, body) => {
        console.log(body)
    }
);
Run Code Online (Sandbox Code Playgroud)

但是为了排除故障,我真的需要查看请求的 HTTP 消息正文,因为它会出现在线路上。理想情况下,我正在寻找带有 Node.jsBuffer对象的原始字节表示。似乎很容易得到这个响应,但不是请求。我对multipart/form-data.

我查看了文档和 GitHub 问题,但无法弄清楚。

Swa*_*yam 5

最简单的方法是在任何端口上启动一个 netcat 服务器:

$ nc -l -p 8080
Run Code Online (Sandbox Code Playgroud)

并将代码中的 URL 更改为 localhost:

https://localhost:8080/v1beta1/text:synthesize?key=API_KEY
Run Code Online (Sandbox Code Playgroud)

现在,发出的任何请求都将打印发送到本地主机服务器的整个原始 HTTP 消息。

显然,您将无法看到响应,但是您可以在运行 netcat 的终端中检查整个原始请求数据


Nic*_*Nic 4

我想出了如何使用 Request 转储 HTTP 消息正文。在这两种情况下,我只是复制内部request使用的相同方法。

多部分表单上传

req._form.pipe(process.stdout);
Run Code Online (Sandbox Code Playgroud)

URL 编码表单

console.log(req.body);
Run Code Online (Sandbox Code Playgroud)