2016-10-11 4 views
1

Ich bin ein Formular abgeschickt werden und die folgenden wird aufgerufen ...Knoten js POST keine Daten bekommen Reagieren mit

handleLogin(){ 
    fetch('http://localhost:8080', { 
     method: 'post', 
     body: JSON.stringify({ 
     username: this.state.username, 
     password: this.state.password 
     }) 
    }); 

} 

Es macht eine POST-Anforderung an meine restAPI. Die Anforderung funktioniert, aber die Daten werden nicht weitergegeben ...

app.post('/', function(req, res, next) { 
    console.log(req.body.username); 
    .... 

Diese undefinierten ausdruckt, was bedeutet, Passwort und Benutzernamen werden nicht durch den Aufruf übergeben. Was mache ich falsch?

+0

Als Erstes sollten Sie die Registerkarte "Netzwerk" in den Chrome-Entwicklertools überprüfen. Dort können Sie sehen, welche Daten in der Anfrage genau gesendet werden. Ich würde auch empfehlen, 'this.state' vor dem Aufruf von' fetch() 'zu drucken. –

+0

@MouadDebbar Ich habe 'this.state' gedruckt, alles ist gut. Ich überprüfe das Netzwerk – Bolboa

+0

@MouadDebbar, also überprüfe ich das Netzwerk, und unter Header-Registerkarte> Formulardaten sagt es mir, dass die richtigen Anmeldeinformationen übergeben wurden. Ich bin sehr verwirrt, warum ich es nicht abrufen kann – Bolboa

Antwort

1

Express liest standardmäßig den Hauptteil der Anfrage nicht. Um das Parsen zu ermöglichen, müssen Sie eine Middleware wie body-parser verwenden. Sie können einige Informationen in der express docs finden.

Außerdem muss die Client-Seite angeben, dass sie json Daten sendet. Dies kann mit dem Header Content-Type erreicht werden. Es gibt ein ziemlich gutes Tutorial über fetch()here. Sie können direkt zum Abschnitt Request Headers springen, der für Ihre Frage relevant ist.

0
var express = require("express"); 
    var app = express(); 
    var bodyParser = require('body-parser'); 
    const PORT = process.env.PORT || 7070; 
    const BASEURL = process.env.BASEURL || 'http://localhost/7070'; 

    app.use(bodyParser.urlencoded({extended:true})); 
    app.listen(PORT, function() { console.log('Server running on'+BASEURL); 
    });