在我发送之前,是否有一种方法来检查Node.js https请求的主体
Is there a way to check the body of a Node.js https request before I send it?
我正在尝试调试一些API调用,并且我想确认我正在发送我认为我正在发送的内容。
var req = https.request(request, function(res) {
var body;
res.setEncoding('utf8');
body = "";
res.on('data', function(chunk) {
return body += chunk;
});
res.on('end', function() {
if (res.statusCode === 200) {
return settings.success(null, JSON.parse(body), res);
} else {
return settings.error(body, null, res);
}
});
return res.on('error', function() {
return settings.error(null, Array.prototype.slice.apply(arguments), res);
});
});
if (settings.data != null) {
req.write(settings.data);
}
// check body of req here
settings.data
是一个protobuf buffer。我想检查最终写好的代码体,因为在调用的某个地方有一个bug,我想确切地看到我发送的是什么。有人能帮忙吗?
编辑:我误解了原来的问题。要检查发送的内容,您可以使用util.inspect(settings.data)
返回一个字符串,该字符串显示该变量的内容或使用console.dir(settings.data)
隐式地将该字符串显示给stdout (console.dir()
在幕后使用util.inspect()
)。
原始答:
我相信协议缓冲区是二进制,但是您将所有数据转换为utf8字符串。您可以尝试将其全部保存为二进制:
var body = [], nb = 0;
res.on('data', function(chunk) {
body.push(chunk);
nb += chunk.length;
});
res.on('end', function() {
body = Buffer.concat(body, nb);
// now `body` contains all protocol buffer data in the original binary format
});
如果你想获得缓冲区中内容的文本表示,你可以使用util.inspect()
。例如:
var inspect = require('util').inspect;
// ...
res.on('end', function() {
body = Buffer.concat(body, nb);
if (res.statusCode === 200)
settings.success(null, inspect(body), res);
else
settings.error(body, null, res);
});
相关文章:
- 递归使用 eval() 是检查程序执行的好方法吗?
- 用于检查数组中是否存在元素的javascript自定义方法
- 指令加载真的很长,检查加载时间的方法
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 检查变量是否为字符串的简单方法
- 有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间
- 点击一个按钮,有没有一种方法可以检查Div内部的图像
- JavaScript:检查变量是否等于两个或多个值之一的简单方法
- 如果我返回表,检查 Ajax 调用是否为 200 OK的最佳方法是什么
- 检查对话框是否为 Open 会引发“初始化前无法在对话框上调用方法”错误
- 在 Node.js 中检查带有除沟器的方法链
- 检查浏览器是否支持iFrame上的加载方法
- 检查 redux 状态是否更改的简单方法
- Javascript应该使用什么方法来查找或检查数组中是否存在字符串
- 如何检查方法 modernizer.mq 是否受支持
- 检查方法返回未定义
- 将webpurify javascript检查方法的状态返回到主程序
- 重写tinymce 4拼写检查方法
- 如何检查方法是否调用了茉莉花单元测试
- Js函数来检查方法是否抛出