web-dev-qa-db-fra.com

Ne peut pas obtenir POST données utilisant Node JS/Express JS et Postman

C'est le code de mon serveur:

var express = require('express');
var bodyParser = require("body-parser");
var app = express();
app.use(bodyParser.json());

app.post("/", function(req, res) {
    res.send(req.body);
});

app.listen(3000, function () {
    console.log('Example app listening on port 3000!');
});

Depuis Postman, je lance une demande POST à http: // localhost: 3000/ et dans Body/form-data, j'ai une clé "foo" et une valeur "bar".

Cependant, je continue à recevoir un objet vide dans la réponse. La propriété req.body est toujours vide.

Ai-je manqué quelque chose?  enter image description here

8
user2923322

Ajoutez le codage de la demande. Voici un exemple

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

Sélectionnez ensuite x-www-form-urlencoded dans Postman ou définissez Content-Type sur application/json et sélectionnez raw.

Edit pour l’utilisation de raw

Brut

{
  "foo": "bar"
}

En-têtes

Content-Type: application/json

EDIT # 2 Répondre aux questions du chat:

  1. pourquoi cela ne peut pas fonctionner avec des données de formulaire? 

Vous pouvez bien sûr, regardez cette réponse Comment gérer FormData from express 4

  1. Quelle est la différence entre x-www-form-urlencoded et raw

Différences entre application/json et application/x-www-form-urlencoded

16
R. Gulbrandsen
let express = require('express');
let app = express();

// For POST-Support
let bodyParser = require('body-parser');
let multer = require('multer');
let upload = multer();

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

app.post('/api/sayHello', upload.array(), (request, response) => {
    let a = request.body.a;
    let b = request.body.b;


    let c = parseInt(a) + parseInt(b);
    response.send('Result : '+c);
    console.log('Result : '+c);
});

app.listen(3000);

Exemple de JSON et résultat du JSON:

Sample Json and result of the json

Définissez Content-typeL application/JSON:

Set Content-type: application/json

0
Goutam Ghosh