2017-06-28 2 views
1

Ich arbeite an einem Web-Push-Benachrichtigungen-Projekt. Ich möchte Benutzerabonnements von meinem Client an einen Knotenserver senden.Kein Körper in POST-Anfrage

Client-Seite Code

function sendSubscriptionToBackEnd(subscription) { 
    return fetch('/api/save-subscription/', { 
    method: 'POST', 
    headers: { 
     'Content-Type': 'application/json' 
    }, 
    body: JSON.stringify(subscription) 
    }); 
} 

Seite Server-Code

app.post('/api/save-subscription/', function (req, res) { 
    console.log(req.body); 
} 

Das Bezugsobjekt ist ein Standard-Abonnement mit "Endpunkt" und "Schlüssel". Ich habe bereits versucht, das Abonnement auf der Client-Seite vor dem Senden zu drucken, und es scheint gültig zu sein.

Das Problem ist, dass das "req" -Objekt auf der Serverseite keinen "body" -Schlüssel enthält. Also, ich weiß nicht, wie man das Abonnement auf der Serverseite ergreift.

Antwort

3

Möglicherweise benötigen Sie die body-parser Middleware, wenn Sie es nicht bereits haben.

Das ist, was den Körper von http-Anfragen analysiert, und gibt Ihnen ein nettes analysiertes Objekt, mit dem umzugehen ist.

In Ihrem Server-Side-Code:

const bodyParser = require('body-parser'); 
const express = require('express'); 

const app = express(); 
app.use(bodyParser.json()); // <-- this guy! 

app.post('/api/save-subscription', (req, res) => { 
    console.log(req.body); 
    return res.sendStatus(201); 
}); 
+0

Arbeitete wie ein Zauber! Ich bin neu im Knoten. Vielen Dank! –

+2

Wir waren an einem Punkt alle neu - viel Glück beim Lernen! –

Verwandte Themen