Requêtes Node.js GET/POST


Dans de nombreux scénarios, notre serveur doit gérer le navigateur de l'utilisateur, comme la soumission d'un formulaire.

Les formulaires soumis au serveur utilisent généralement des requêtes GET/POST.

Dans ce chapitre, nous vous présenterons la requête Node.js GET/POST.


Obtenir le contenu de la requête GET

Étant donné que la requête GET est directement intégrée dans le chemin, l'URL est le chemin complet de la requête, y compris la partie après ?, vous pouvez donc analyser manuellement la partie suivante Contenu en paramètre de la requête GET.

La fonction d'analyse dans le module url de node.js fournit cette fonction.

var http = require('http');
var url = require('url');
var util = require('util');

http.createServer(function(req, res){
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end(util.inspect(url.parse(req.url, true)));
}).listen(3000);

Visitez http://localhost:3000/user?name=w3c&email=w3c@w3cschool.cc dans le navigateur et visualisez les résultats renvoyés :

w3cnodejs

Obtenez le contenu de la requête POST

Tout le contenu du La requête POST est présente Dans le corps de la requête, http.ServerRequest n'a pas de contenu d'attribut comme corps de la requête. La raison en est qu'attendre que le corps de la requête soit transmis peut être une tâche fastidieuse.

Par exemple, lors du téléchargement de fichiers, nous n'avons peut-être pas besoin de prêter attention au contenu du corps de la requête dans de nombreux cas. Les requêtes POST malveillantes consommeront considérablement les ressources du serveur. Tous les node.js n'analyseront pas le corps de la requête. par défaut. Vous devez le faire manuellement lorsque vous en avez besoin.

var http = require('http');
var querystring = require('querystring');
var util = require('util');

http.createServer(function(req, res){
    var post = '';     //定义了一个post变量,用于暂存请求体的信息

    req.on('data', function(chunk){    //通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中
        post += chunk;
    });

    req.on('end', function(){    //在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。
        post = querystring.parse(post);
        res.end(util.inspect(post));
    });
}).listen(3000);