it-swarm.com.de

Node.js, wie man JSON-Daten von der Anfrage liest?

Ich habe einen Server wie folgt:

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

Die Anfrage wird von einem Client gesendet als:

$.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);
    }
});

soweit die verbindung in ordnung.

Mein Problem ist auf dem Server:

console.log(req);

wohin möchte ich die gesendeten Daten lesen? Wie kann ich { "a": "128", "b": "7" } von req lesen?

6
arslan

Obwohl Sie es nicht erwähnen, sieht Ihr Code so aus, als ob er für eine Express - Umgebung geschrieben wurde. Darauf zielt meine Antwort ab.

Stellen Sie sicher, dass Sie body-parser für Express verwenden. Falls Ihr Projekt von einem generierten Boilerplate-Code abhängt, ist dieser höchstwahrscheinlich bereits in Ihrem Hauptserverskript enthalten. Wenn nicht:

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

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

Auf den analysierten JSON kann dann über req.body zugegriffen werden:

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

Für Express 4+

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

app.use(express.json());

Dann können Sie req.body wie erwartet verwenden.

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