web-dev-qa-db-fra.com

Node.js comment lire les données JSON à partir de la demande?

J'ai un serveur comme suit:

app.post('/', function(req, res, next) {
   console.log(req);
   res.json({ message: 'pppppppppppppssssssssssssss ' });   
});

La demande est envoyée par un client en tant que:

$.ajax({
    type: "POST",
    url: self.serverURI,
    data: JSON.stringify({ "a": "128", "b": "7" }),
    dataType: 'json',
    success: function (result) {
        console.log(result);
    },
    error: function (xhr, ajaxOptions, thrownError) {
        console.log(xhr);
    }
});

jusqu'à présent, la connexion est bonne.

Mon problème est dans le serveur:

console.log(req);

où je veux lire les données que j'ai envoyées. Comment puis-je lire { "a": "128", "b": "7" } à partir de req?

6
arslan

Bien que vous ne le mentionniez pas, votre code a l'air d'avoir été écrit pour un environnement Express . Ma réponse est ciblée à cela.

Assurez-vous d’utiliser body-parser pour Express. Si votre projet dépend du code standard généré, il est probablement déjà inclus dans le script de votre serveur principal. Si non:

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

Installation avec npm: npm install body-parser --save

Le JSON analysé est alors accessible via req.body:

app.post('/', function(req, res, next) {
    console.log(req.body); // not a string, but your parsed JSON data
    console.log(req.body.a); // etc.
    // ...
});
5
qqilihq

Pour Express 4+,

const express = require("express");
const app = express();

app.use(express.json());

Ensuite, vous pouvez utiliser req.body comme prévu.

app.post("/api", (req, res) => {
  /*
    If the post request included { data: "foo" },
    then you would access `data` like so:
  */
  req.body.data
  ...
});
1
Raphael Rafatpanah