Je suis un débutant de Nodejs, j'essaie de connaître Req.body à l'aide d'un corps de middleware ou d'utilisation de rien, mais tous les deux ont trouvé req.body est indéfini. Voici mon code
var app = require('express')(); var bodyParser = require('body-parser'); var multer = require('multer'); app.get('/', function(req, res) { res.send("Hello world!\n"); }); app.post('/module', function(req, res) { console.log(req); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(multer); console.log(req.body); }); app.listen(3000); module.exports = app;
3 Réponses :
Vous placez la configuration express pour Body-Parser code> au mauvais emplacement.
var app = require('express')();
var bodyParser = require('body-parser');
var multer = require('multer');
// these statements config express to use these modules, and only need to be run once
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(multer);
// set up your routes
app.get('/', function(req, res) {
res.send("Hello world!\n");
});
app.post('/module', function(req, res) {
console.log(req);
console.log(req.body);
});
app.listen(3000);
module.exports = app;
Merci de votre aide, j'ai essayé comme vous m'avez dit, mais rien d'imprimer à la terminaison, je ne sais pas pourquoi.
Merci pour votre aide, j'ai trouvé une erreur de code, app.use (Multer ()).
Par défaut CURL utilise Pour les formulaires d'urlencode, vos données doivent être au format droit: Pour JSON, vous devez définir explicitement le droit Également comme @Brett noté, vous devez Type de contenu: Application / X-www-Form-Urlencoded code> pour les soumissions de formulaire qui ne contiennent pas de fichiers. P>
Curl -X Post -D 'FOO = BAR & BAZ = BLA' http://127.0.0.1:3000/Module code> ou
ou
CURL -X Post -D 'FOO = BAR' -D 'BAZ = BLA' http://127.0.0.1:3000/Module code>. P>.
type de contenu code>:
curl -h "type de contenu: application / json" -d '{"foo": " bar "," baz ":" bla "} 'http://127.0.0.1:3000/module code>. p>
APP.Utilise () CODE> Votre middleware Avant em> que post route quelque part (en dehors d'un gestionnaire d'itinéraire). P>
Vous devez vous assurer de définir toutes les configurations Express avant de définir des itinéraires. Comme un analyseur corporel est responsable de l'analyse du corps de Requoust.
var express = require('express'), app = express(), port = parseInt(process.env.PORT, 10) || 8080; //you can remove the app.configure at all in case of it is not supported //directly call the inner code app.configure(function(){ app.use(bodyParser.urlencoded()); //in case you are sending json objects app.use(bodyParser.json()); app.use(app.router); }); app.listen(port); app.post("/module", function(req, res) { res.send(req.body); });
Il n'y a pas d'app.configure dans Express 4.9
Je pense que Bodyparser extecte un étui de test JSON et
code> n'est pas le cas: /
Déplacer l'application.use (bodyparser.json ()); (et le reste du middleware) du manuel / poste
J'ai essayé Curl -X Post -D '{"Nom": "Tyrion"}' 127.0.0.1:3000/Module , mais toujours indéfini.