Cet article présente principalement une compréhension approfondie du module http node.js. Maintenant, je le partage avec vous et le donne comme référence.
Le module http est principalement utilisé pour construire un serveur et un client HTTP. Le module http doit être appelé pour utiliser les fonctions du serveur ou du client HTTP.
Créer un serveur
var http = require(“http”);var url = require(“url”);//创建服务器//http继承自tcpvar server = http.createServer(function (req,res) { var urlstr = req.url;//获取请求的路径 var urlMethod = req.method;//获取请求的方法 var urlObj = url.parse(urlstr,true); console.log(urlObj); console.log(urlMethod); res.end(“hello”);});server.listen(8080);
Traiter la demande
Les requêtes sont divisées en deux types : get et post, get Si l'adresse URL de la demande comporte des paramètres, req.url peut obtenir les paramètres, tandis que la demande de publication est plus compliquée. Utilisez req.on() pour gérer les demandes de publication.
Méthode de requête de publication : utilisez req.on("data" function(){}) pour lire, utilisez la concaténation de chaînes str et lisez req.on("end", function(){}) Après lors de la récupération, la str de sortie est le paramètre que nous voulons envoyer dans la requête de publication ;
méthode de requête get : utilisez url.parse(req.url,true).query sur l'adresse de la requête pour obtenir les paramètres.
var http = require("http"); var fs = require("fs"); var url = require("url"); var querystring = require("querystring"); var server = http.createServer(function (req,res) { console.log(req.method); var pathname = url.parse(req.url,true).pathname; if(pathname=="/"){ // 加载注册页面 var rs = fs.createReadStream("post.html"); rs.pipe(res); }else if(pathname=="/post"){ // 处理post请求 var str = ""; req.on("data",function (chunk) { // console.log(chunk.toString()); str += chunk; }); req.on("end",function(){ var postObj = querystring.parse(str); console.log(postObj); }) }else if(pathname=="/get"){ // get请求 var getObj = url.parse(req.url,true).query; res.write(JSON.stringify(getObj)); res.end(); }else if(pathname!="/favicon.ico"){ var rs = fs.createReadStream("."+pathname); rs.pipe(res); }; }); server.listen(8787);
Traitement des fichiers téléchargés
Le code html front-end est le suivant : Je n'entrerai pas dans les détails.
<form action=“/upimg” method=“post” enctype=“multipart/form-data”> 用户名: <input type=“text” name=“user”><br> 密码: <input type=“password” name=“pass”><br> 上传图片: <input type=“file” name=“file1”><br> <input type=“submit” value=“提交”></form>
Pour implémenter le téléchargement de fichiers, vous devez introduire le module formidable var formidable = require("formidable"); s'il n'existe pas de tel module, entrez npm install formidable dans le terminal pour l'installer.
Les trois paramètres de la fonction de rappel de la méthode form.parse(req, function(err, field, fies){})
err : renvoyer un message d'erreur
champs : champs renvoyés par demande de publication et valeurs correspondantes
fies : objet fichier téléchargé, l'objet contient de nombreuses informations détaillées du fichier
Après avoir obtenu les informations sur le fichier, utilisez la lecture et l'écriture du flux de données pour copier le fichier
var http = require("http"); var fs = require("fs"); var url = require("url"); // 文件上传 var formidable = require("formidable"); var server = http.createServer(function(req,res){ var pathname = url.parse(req.url,true).pathname; if(pathname=="/"){ var rs = fs.createReadStream("uploads.html"); rs.pipe(res); }else if(pathname=="/uploads"){ // 实例化一个formidable类 var form = new formidable.IncomingForm(); // 调用parse方法 form.parse(req,function(err,fields,files){ if(err){ return console.log(err); }else{ // console.log("字段",fields); // 存储字段 var fieldStr = JSON.stringify(fields); fs.writeFileSync("1.txt",fieldStr); // 转存文件 if(!fs.existsSync("uploads")){ fs.mkdir("uploads"); } // 随机路径 var filePath = files.img.path; var rs = fs.createReadStream(filePath); var ws = fs.createWriteStream("./uploads/"+files.img.name); rs.pipe(ws); rs.on("data",function (chunk) { }) rs.on("end",function(){ console.log("复制成功"); res.write("上传成功"); res.end(); }) res.setHeader("Content-type","text/html;charset=utf8"); console.log("文件",files); } }) }else if(pathname!="/favicon.ico"){ var rs = fs.createReadStream("."+pathname); rs.pipe(res); } }); server.listen(8880);
Client de simulation http
Principalement configuration des options, les paramètres les plus basiques sont les suivants : bloc de code.
méthode : Décrivez la méthode de requête
hôte : adresse IP du serveur, nous prenons ici localhost comme exemple ;
// 通过nodejs模拟客户端 var http = require("http"); var options = { method:"post", host:"localhost", port:2121, path:"/" }; var request = http.request(options,function (res) { var str = ""; res.on("data",function(chunk){ str += chunk; }); res.on("end",function () { console.log(str); }) }); var obj = { name:"李四", age:20 } request.write(JSON.stringify(obj)); request.end();
Articles connexes :
Comment implémenter la navigation avec ElementUI dans vue-routerExplication détaillée de l'introduction des composants elementUI dans les projets vueActualisation et changement d'onglet dans vueComment définir la couleur d'arrière-plan d'une page séparée dans Vue-cliÀ propos de l'utilisation de Material dans Angular2 (tutoriel détaillé)Comment utiliser la méthode Lodash dans Angular ? Utilisez JS natif pour réaliser des liens à trois niveaux entre les provinces et les municipalitésCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!