2017-02-12 12 views
1

Ich habe ein Problem mit bodyparser, dass ich nicht herausfinden kann.Express bodyParser funktioniert nicht richtig

Vor ein paar Wochen habe ich eine REST-API mit Express erstellt und mit bodyParser JSON-Daten vom Client gelesen. Alles hat gut funktioniert, aber heute Morgen habe ich versucht, meine Anwendung zu starten und alle meine req.body.data sind undefiniert, in der Tat ist der Körper gleich {}.

Hier ist meine Konfiguration:

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

Und dann konfiguriere ich meine Routen. Ich habe gesehen, dass du das in dieser Reihenfolge deklarieren musst, dh bodyParser vor deiner Route und das ist was ich tue. Ich dachte, dass es ein Versions-Problem ist, aber nach einigen Upgrades ist das Problem immer noch vorhanden.

Ich benutze HttpRequester, um den Client zu simulieren. Bis heute hat alles gut funktioniert.

Beispiel von Daten gesendet:

{ 
    "username": "david", 
    "password": "bowie", 
    "email": "[email protected]" 
} 

Dann gibt es diesen Code für die Reaktion:

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 
app.use(logger('dev')); 
app.use(expressValidator()); 
app.use(cookieParser()); 

app.use('/users', users); 

dann in Benutzer ich nur einen Benutzer erstellen:

// Creation of a user. 
router.post('/create', function(req, res) { 

    // We check current mistakes like username or password empty. 
    if (!userhelper.checkCreateUserRequest(req, res)) { 
    return; 
    } 

    // Save the user in BDD 
} 

Im checkCreateUserRequest Ich mache das:

if (req.body.username == null || req.body.password == null ||  req.body.email == null) { 
res.status(400).json({message: "malformed request", code: 1}); 
return false; 

}

ich andere Dinge tun, wie zu überprüfen, ob Benutzername leer ist zum Beispiel, aber ich glaube nicht, es ist wichtig, es einzufügen.

Vielen Dank für Ihre Antworten und sorry für mein schlechtes Englisch ...

+0

Könnten Sie einen Code-Snippet mit einem Beispiel Daten hinzufügen, die Sie senden bitte? –

+0

Vielen Dank für Ihre Antwort, ich habe meinen Beitrag aktualisiert – xavatic

Antwort

2

Sie könnten die richtigen HTTP-Header gesetzt, wenn Sie JSON Anfrage verwenden.

Content-Type: application/json

+0

Sie haben recht, nach einigen Untersuchungen habe ich festgestellt, dass mein REST-Client nicht richtig konfiguriert wurde. Ich verwende das Standard-Addon von Firefox und ich glaube, ich habe es nicht richtig konfiguriert. Mit Postboten und einer eckigen Anwendung funktioniert es. Danke für deine Antwort – xavatic