猿问

Node.js-使用Express获取原始请求正文

当我使用Express时,我的代码是:


app.use(express.bodyParser());

我将如何获得原始请求正文?


尚方宝剑之说
浏览 1091回答 3
3回答

凤凰求蛊

使用bodyParser中的verify回调,我得到了一个与bodyParser配合良好的解决方案。在这段代码中,我正在使用它来获取内容的sha1并获取原始内容。app.use(bodyParser.json({    verify: function(req, res, buf, encoding) {        // sha1 content        var hash = crypto.createHash('sha1');        hash.update(buf);        req.hasha = hash.digest('hex');        console.log("hash", req.hasha);        // get rawBody                req.rawBody = buf.toString();        console.log("rawBody", req.rawBody);    }}));我是Node.js和express.js的新手(从昨天开始,从字面上看!),所以我想听听对此解决方案的评论

缥缈止盈

请谨慎处理其他答案,因为如果您还希望支持json,urlencoded等,它们将无法在bodyParser上正常播放。要使其与bodyParser一起使用,应将处理程序设置为仅在Content-Type标头上注册就像bodyParser本身一样关心。为了得到一个请求的原始主体内容Content-Type: "text/plain"到req.rawBody你可以这样做:app.use(function(req, res, next) {  var contentType = req.headers['content-type'] || ''    , mime = contentType.split(';')[0];  if (mime != 'text/plain') {    return next();  }  var data = '';  req.setEncoding('utf8');  req.on('data', function(chunk) {    data += chunk;  });  req.on('end', function() {    req.rawBody = data;    next();  });});
随时随地看视频慕课网APP

相关分类

Node.js
我要回答