Πώς να επεξεργαστείτε δεδομένα POST στο Node.js;

Πώς εξάγετε δεδομένα φόρμας (form[method="post"]) και μεταφορτώσεις αρχείων που αποστέλλονται από τη μέθοδο HTTP POST στο Node.js;

Διάβασα την τεκμηρίωση, έψαξα στο google και δεν βρήκα τίποτα.

function (request, response) {
    //request.post????
}

Υπάρχει κάποια βιβλιοθήκη ή κάποιο hack;

Μπορείτε να χρησιμοποιήσετε την ενότητα querystring:

var qs = require('querystring');

function (request, response) {
    if (request.method == 'POST') {
        var body = '';

        request.on('data', function (data) {
            body += data;

            // Too much POST data, kill the connection!
            // 1e6 === 1 * Math.pow(10, 6) === 1 * 1000000 ~~~ 1MB
            if (body.length > 1e6)
                request.connection.destroy();
        });

        request.on('end', function () {
            var post = qs.parse(body);
            // use post['blah'], etc.
        });
    }
}

Τώρα, για παράδειγμα, αν έχετε ένα πεδίο input με όνομα age, θα μπορούσατε να έχετε πρόσβαση σε αυτό χρησιμοποιώντας τη μεταβλητή post:

console.log(post.age);
Σχόλια (21)
Λύση

Αν χρησιμοποιείτε την [Express][4] (ανάπτυξη ιστοσελίδων υψηλής απόδοσης και υψηλής ποιότητας για Node.js), μπορείτε να το κάνετε αυτό:

HTML:


    <input type="text" name="user[name]">
    <input type="text" name="user[email]">
    <input type="submit" value="Submit">

Πελάτης API:

fetch('/', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        user: {
            name: "John",
            email: "john@example.com"
        }
    })
});

Node.js: (από Express v4.16.0)

// Parse URL-encoded bodies (as sent by HTML forms)
app.use(express.urlencoded());

// Parse JSON bodies (as sent by API clients)
app.use(express.json());

// Access the parse results as request.body
app.post('/', function(request, response){
    console.log(request.body.user.name);
    console.log(request.body.user.email);
});

Node.js: (για Express

Σχόλια (28)

Και αν δεν θέλετε να χρησιμοποιήσετε ολόκληρο το πλαίσιο όπως το Express, αλλά χρειάζεστε επίσης διαφορετικά είδη φορμών, συμπεριλαμβανομένων των μεταφορτώσεων, τότε το formaline μπορεί να είναι μια καλή επιλογή.

Παρατίθεται στο Node.js modules.

Σχόλια (0)