Node.js中request模块对Buffer的处理详解

本文介绍了在使用Node.js的request模块处理Buffer时遇到的困惑,详细讲述了Buffer对象在请求中显示为乱码的问题,分析了原因,发现是由于误将数组作为Buffer内容导致。通过查阅文档和实验,揭示了Buffer内容被解析为ASCII码,以及request模块对form-data处理的方式,提醒开发者注意官方示例中的潜在误导,避免类似错误。
摘要由CSDN通过智能技术生成

我在工作过程中用到了request模块来模拟前端请求进行接口测试,但是在测试buffer的时候遇到了问题,卡了很久,查阅了大量的资料才发现是个由底层逻辑触发的乌龙。因此记录下来并分享给各位。

首先引入request模块(假设你已有NodeJS):

npm install -s request

同时你需要一个后端,可以使用express-generator生成,参考https://blog.csdn.net/Z_ammo/article/details/103559758

设置接口:

app = express();
app.post('/', function(req, res, next) {
  console.log(req.headers);
  let buf = [];
  req.on('data', (data) => {
    buf.push(data);
  });
  req.on('end', () => {
    buf = Buffer.concat(buf);
    console.log(buf.toString());
  });
  res.send('1');
});

现在发送请求:

var formData = {
  my_field: 'my_value',
  my_buffer: Buffer.from([1,2,3]) // 这里我使用了request官方的示例,也就是坑爹的开始
};

//post请求
reque
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值