Obtenir les données du corps de la requête HTTP à l'aide de Node

Découvrez comment extraire les données envoyées en JSON via un corps de requête HTTP à l'aide de Node

Voici comment vous pouvez extraire les données qui ont été envoyées en tant queJSONdans le corps de la requête.

Si vous utilisez Express, c'est assez simple: utilisez lebody-parserModule de nœud.

Par exemple, pour obtenir le corps de cette requête:

const axios = require('axios')

axios.post(’/todos’, { todo: ‘Buy the milk’, })

Voici le code côté serveur correspondant:

const bodyParser = require('body-parser')

app.use( bodyParser.urlencoded({ extended: true, }) )

app.use(bodyParser.json())

app.post(’/endpoint’, (req, res) => { console.log(req.body.todo) })

Si vous n'utilisez pas Express et que vous souhaitez le faire dans vanilla Node, vous devez bien sûr faire un peu plus de travail, car Express en résume beaucoup pour vous.

La chose clé à comprendre est que lorsque vous initialisez le serveur HTTP en utilisanthttp.createServer(), le rappel est appelé lorsque le serveur a obtenu tous les en-têtes HTTP, mais pas le corps de la requête.

Lerequestl'objet passé dans le rappel de connexion est unflux.

Donc, nous devons écouter le contenu du corps à traiter, et il est traité en morceaux.

Nous obtenons d'abord les données en écoutant le fluxdataévénements, et lorsque les données se terminent, le fluxendl'événement est appelé, une fois:

const server = http.createServer((req, res) => {
  // we can access HTTP headers
  req.on('data', (chunk) => {
    console.log(`Data chunk available: ${chunk}`)
  })
  req.on('end', () => {
    //end of data
  })
})

Donc, pour accéder aux données, en supposant que nous nous attendons à recevoir une chaîne, nous devons la mettre dans un tableau:

const server = http.createServer((req, res) => {
  let data = []
  req.on('data', (chunk) => {
    data.push(chunk)
  })
  req.on('end', () => {
    JSON.parse(data).todo // 'Buy the milk'
  })
})

Téléchargez mon gratuitManuel de Node.js


Plus de didacticiels sur les nœuds: