Maison >interface Web >js tutoriel >Comment utiliser le module http dans node.js

Comment utiliser le module http dans node.js

亚连
亚连original
2018-06-09 16:59:432258parcourir

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

  1. err : renvoyer un message d'erreur

  2. champs : champs renvoyés par demande de publication et valeurs correspondantes

  3. 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.

  1. méthode : Décrivez la méthode de requête

  2. hôte : adresse IP du serveur, nous prenons ici localhost comme exemple ;

  3. port : numéro de port du serveur ;
  4. chemin : chemin de la requête
  5. http.createServer() n'est plus utilisé ; pour créer le serveur à ce moment-là, utilisez plutôt http.request() pour demander le serveur, et le reste est presque le même que le serveur.

J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.
// 通过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-router

Explication détaillée de l'introduction des composants elementUI dans les projets vue

Actualisation et changement d'onglet dans vue

Comment 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és

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

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn