Heim >Web-Frontend >js-Tutorial >So verwenden Sie das http-Modul in node.js
Dieser Artikel führt hauptsächlich in ein tiefgreifendes Verständnis des http-Moduls von node.js ein. Jetzt teile ich es mit Ihnen und gebe Ihnen eine Referenz.
Das http-Modul wird hauptsächlich zum Erstellen von HTTP-Servern und -Clients verwendet. Das http-Modul muss aufgerufen werden, um die HTTP-Server- oder Client-Funktionen zu verwenden.
Server erstellen
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);
Anfrage verarbeiten
Anfragen werden in zwei Typen unterteilt: Abrufen und Posten, Anforderungs-URL abrufen Wenn die Adresse Parameter hat, kann req.url die Parameter abrufen, während die Post-Anfrage komplizierter ist. Verwenden Sie req.on(), um Post-Anfragen zu bearbeiten.
Post-Anfragemethode: Verwenden Sie zum Lesen req.on("data" function(){}), verwenden Sie die Str-String-Verkettung und lesen Sie req.on("end", function(){}) ein Beim Abrufen ist der Ausgabe-Str der Parameter, den wir in der Post-Anfrage senden möchten.
Anforderungsmethode abrufen: Verwenden Sie url.parse(req.url,true).query für die Anforderungsadresse, um die Parameter abzurufen.
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);
Upload-Dateiverarbeitung
Der Front-End-HTML-Code lautet wie folgt: Ich werde nicht auf Details eingehen.
<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>
Um den Datei-Upload zu implementieren, müssen Sie das formidable-Modul var formidable = require("formidable"); einführen, wenn es kein solches Modul gibt, geben Sie npm install formidable im Terminal ein, um es zu installieren.
Die drei Parameter der Rückruffunktion der Methode form.parse(req, function(err, field, fies){})
err: Fehlermeldung zurückgeben
Felder: Von der Post-Anfrage zurückgegebene Felder und entsprechende Werte
Fies: Hochgeladenes Dateiobjekt, das Objekt enthält viele detaillierte Informationen der Datei
Nachdem Sie die Dateiinformationen erhalten haben, verwenden Sie das Lesen und Schreiben des Datenstroms, um die Datei zu kopieren
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);
http-Simulationsclient
Hauptsächlich Optionenkonfiguration, die grundlegendsten Parameter sind wie folgt im Codeblock.
Methode: Beschreiben Sie die Anforderungsmethode
Host: Server-IP, hier nehmen wir localhost als Beispiel;
// 通过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();
Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.
Verwandte Artikel:
So implementieren Sie die Navigation mit ElementUI im Vue-RouterDetaillierte Erläuterung der Einführung von elementUI-Komponenten in Vue-ProjekteAktualisierung und Tab-Wechsel in VueSo legen Sie die Hintergrundfarbe für eine separate Seite in Vue-cli festÜber die Verwendung von Material in Angular2 (ausführliches Tutorial)Wie verwende ich die Lodash-Methode in Angular? Verwenden Sie native Js, um eine dreistufige Verknüpfung zwischen Provinzen und Gemeinden zu realisierenDas obige ist der detaillierte Inhalt vonSo verwenden Sie das http-Modul in node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!