Comment obtenir à la fois du corps analysé et du corps brut dans Express

Découvrez comment obtenir à la fois du corps analysé et du corps brut dans Express avecbody-parser

Dans une application que je construis, j'ai eu ce problème.

Avec Express, je peux importerbody-parserpour analyser le corps en JSON:

import bodyParser from 'body-parser'
app.use(bodyParser.json())

Cependant, pour intégrer l'API de paiements Stripe, j'ai eu besoin d'exposer lecorps brut(non analysé) dans un point de terminaison, et je ne pouvais pas comprendre comment le faire, tout en analysant le corps en tant que JSON.

Cela a fait l'affaire:

app.use(bodyParser.json({
  verify: (req, res, buf) => {
    req.rawBody = buf
  }
}))

Maintenant, le corps brut est disponible surreq.rawBodyet les données analysées JSON sont disponibles surreq.body.

Dubody-parserGitHub J'ai trouvé que cela double l'utilisation de la RAM pour chaque demande, mais comme j'ai besoin de cette fonctionnalité, je n'ai pas d'autre moyen.

Sauf peut-être créer un serveur différent juste pour le webhook Stripe que je voulais gérer.

Téléchargez mon gratuitManuel de Node.js


Plus de didacticiels sur les nœuds: