如何在 Node.js HTTP2 中获取请求正文?
Posted
技术标签:
【中文标题】如何在 Node.js HTTP2 中获取请求正文?【英文标题】:How to get request body in Node.js HTTP2? 【发布时间】:2019-08-10 02:53:20 【问题描述】:我有以下代码,但不知道如何从请求中获取正文:
var http2 = require('http2');
var fs = require('fs');
var server = http2.createSecureServer(
key: fs.readFileSync('localhost-privkey.pem'),
cert: fs.readFileSync('localhost-cert.pem')
)
server.on('error', function (error) console.error(error) )
server.on('stream', function (stream, headers, body)
var method = headers[':method']
var path = headers[':path']
var body = body || ''
console.log(method, path, body)
stream.respond(
'content-type': `text/$type`,
':status': 200
)
fs.readFile(file, function (error, file)
if (error) file = fs.readFileSync('error.html')
return stream.end(file)
)
)
server.listen(3443)
【问题讨论】:
【参考方案1】:我认为您应该将stream
视为readable stream
server.on('stream', (stream, headers) =>
var chunks = [];
stream.on('data', function (chunk)
chunks.push(chunk);
);
stream.on('end', function ()
// Here is your body
var body = Buffer.concat(chunks);
// Not sure if useful
chunks = [];
);
);
另外,根据documentation,server.on('stream'
回调的第三个参数是flags
,而不是body
。
【讨论】:
以上是关于如何在 Node.js HTTP2 中获取请求正文?的主要内容,如果未能解决你的问题,请参考以下文章