Node http请求中数据块的types
我在这里学习设置一个简单的节点服务器的代码。 我已经看到并习惯了将数据块保存在一个数组中,并最终将它们连接在一起。
http.createServer(function(request, response) { var body = []; request.on('data', function(chunk) { body.push(chunk); }); request.on('end', function() { body = Buffer.concat(body).toString(); ...
-
chunk
的types是什么? 文档说它是Buffer
或string
,但哪一个? -
调用
Buffer.concat(body)
是否安全,其中body
是一个string数组?Buffer.concat(list)
说明文件应该是Buffer实例列表。 string是“缓冲区实例”吗?
同样的文件还指出:
如果使用
readable.setEncoding()
方法为stream指定了默认编码,则监听器callback将作为string传递数据块; 否则数据将作为Buffer
传递。
因为你的代码没有调用setEncoding
,所以chunk
将是一个Buffer。
调用
Buffer.concat(body)
是否安全,其中body
是一个string数组?
> Buffer.concat(['foo', 'bar', 'xxx']) TypeError: "list" argument must be an Array of Buffers
所以不行。 但由于body
将是Buffer的一个数组, Buffer.concat(body)
应该工作得很好。