Node.js Express でPOST本文のRawBodyを取得する

Node.js + Express で、POSTされてきたフォームの本文をそのまま取得したかったのでメモ。

body-parserのverify:rawBodySaverオプションを使う必要がある。

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

let rawBodySaver = function(req, res, buf, encoding) {
  if (buf && buf.length) {
    req.rawBody = buf.toString(encoding || 'utf8');
  }
};

app.use(bodyParser.json({verify: rawBodySaver}));
app.use(bodyParser.urlencoded({verify: rawBodySaver, extended: true}));
app.use(bodyParser.raw({verify: rawBodySaver, type: '*/*'}));

app.use(function(req, res){
    console.log(req.rawBody); //rawBody
    res.send(req.rawBody); //rawBody
});

const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
    console.log('App Running...');
});

そのまま生のBody本文使う需要なんかないんだろうな。

JSON変換のサンプルはゴロゴロ見つかったが。