Heim > Web-Frontend > js-Tutorial > Hauptteil

So verwenden Sie das http-Modul in node.js

亚连
Freigeben: 2018-06-09 16:59:43
Original
2240 Leute haben es durchsucht

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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>
Nach dem Login kopieren

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){})

  1. err: Fehlermeldung zurückgeben

  2. Felder: Von der Post-Anfrage zurückgegebene Felder und entsprechende Werte

  3. 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);
Nach dem Login kopieren

http-Simulationsclient

Hauptsächlich Optionenkonfiguration, die grundlegendsten Parameter sind wie folgt im Codeblock.

  1. Methode: Beschreiben Sie die Anforderungsmethode

  2. Host: Server-IP, hier nehmen wir localhost als Beispiel;

  3. Port: Server-Portnummer;
  4. Pfad: Anforderungspfad
  5. http.createServer() wird nicht verwendet Erstellen Sie zu diesem Zeitpunkt den Server. Verwenden Sie stattdessen http.request (), um den Server anzufordern. Der Rest entspricht fast dem des Servers.
// 通过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();
Nach dem Login kopieren

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-Router

Detaillierte Erläuterung der Einführung von elementUI-Komponenten in Vue-Projekte

Aktualisierung und Tab-Wechsel in Vue

So 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 realisieren

Das 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage