web-dev-qa-db-fra.com

Données de formulaire js express

Quelqu'un peut-il me dire, s'il vous plaît, le moyen recommandé (à jour) d'obtenir les données de formulaire POSTé dans express.

De nombreux tutoriels/posts, etc., parlent de bodyParser, mais ils ne sont plus fournis avec Express et les autres blogs, etc., recommandent d’utiliser urlencoded directement, mais à présent, ce n’est plus disponible.

Essayer de trouver des informations précises sur ces frameworks ou technologies me préoccupe.

BTW ce qui m'intéresse est très simple et petite forme de données

42
Dave Pile

Vous devriez installer body-parser à travers npm-install. Maintenant, il s'agit d'un middleware séparé.

Après cela, ajoutez la ligne suivante dans votre app.js

var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
// in latest body-parser use like below.
app.use(bodyParser.urlencoded({ extended: true }));

Il analyse la demande post en tant que object. Vous obtiendrez vos variables dans req.body.

Dans votre gestionnaire de demandes post.

app.post('/post',function(request,response){
   console.log(request.body) //you will get your data in this as object.
})

Modifier 1

La réponse ci-dessus était pour la question spécifiquement posée, le PO recherchait le bodyParser (obsolète) qui ne faisait plus partie de express.

Comme le titre de la question est très générique et que la réponse n'inclut pas tous les aspects de form-data, Je mettrai la réponse de @ StLia en édition.

fichier Lisez-moi de Body-Parser

Cela ne gère pas les corps en plusieurs parties, en raison de leur nature complexe et généralement importante. Pour les corps en plusieurs parties, les modules suivants pourraient vous intéresser:

53
Mritunjay

Vous pouvez utiliser le module express-formidable . installer 'express-formidable' à l'aide de la commande suivante npm install express-formidable

l'exemple simple est comme suit

const express = require('express');
const formidable = require('express-formidable');

var app = express();

app.use(formidable());

app.post('/upload', (req, res) => {
  //req.fields contains non-file fields 
  //req.files contains files 
  res.send(JSON.stringify(req.fields));
});

Cliquez ici pour plus de détails

16
HubballiHuli

De la README de analyseur de corps) :

Cela ne gère pas les corps en plusieurs parties, en raison de leur nature complexe et généralement importante.

Ce qui précède va travailler avec x-www-form-urlencoded et json mais cela ne fonctionnera avec aucun multipart. form-data est aussi multipart avec l’en-tête multipart/form-data.

En cas de form-data, votre meilleure solution serait d’utiliser express-formidable .

14
StLia