Hvordan behandle POST-data i Node.js?

Hvordan henter du ut skjemadata (form[method="post"]) og filopplastinger sendt fra HTTP-metoden POST i Node.js?

Jeg har lest dokumentasjonen, googlet og ikke funnet noe.

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

Finnes det et bibliotek eller en hack?

Du kan bruke modulen 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.
        });
    }
}

Hvis du for eksempel har et input-felt med navnet age, kan du få tilgang til det ved hjelp av variabelen post:

console.log(post.age);
Kommentarer (21)
Løsning

Hvis du bruker [Express][4] (høy ytelse, høy klasse webutvikling for Node.js), kan du gjøre dette:

HTML:


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

API-klient:

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

Node.js: (siden 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: (for Express

Kommentarer (28)

Og hvis du ikke ønsker å bruke hele rammeverket som Express, men også trenger forskjellige typer skjemaer, inkludert opplastinger, kan formaline være et godt valg.

Den er oppført i Node.js-moduler.

Kommentarer (0)