Ecrire un serveur de ressources statiques HTTP à partir de zéro

Les premiers modules Node requis sont les modules http, url, path et fs.

// 提供一个http 服务
var http = require('http');
// 用于处理 url 字符串和 url对象
var url = require('url');
// 用于处理文件路径
var path = require('path');
// fs 模块  用于读取文件的
var fs = require('fs');

Utilisez ensuite le module http pour créer un module http.

http.createServer(function(request,response){
    
    
  // 
})

Lorsqu'une requête http arrive, elle doit analyser le champ request.url et utiliser url.parse () pour échapper la chaîne request.url dans un objet url.

var pathName = url.parse(request.url).pathname;

On suppose ici que le répertoire où se trouve le fichier js est l'adresse du serveur statique.

 var realName = path.join('.', pathName);

Ensuite, récupérez le type de fichier de la ressource demandée

var ext = path.extname(pathName);
ext = ext ? ext.slice(1) : 'unknown';

Déterminez ensuite si le fichier existe, s'il existe, renvoyez le fichier, sinon renvoyez 404

// 判断文件是否存在。
fs.exists(realName, function (exists) {
    
    

})

Si ça n'existe pas

 if (!exists) {
    
    
   response.writeHead(404, {
    
    'Context-type' : 'text/plain'});
   response.write('this request url' + pathName + ' was not found on this server.');
   response.end();
}

Si le fichier existe, lisez le flux binaire du fichier

var requestType = {
    
    
    "css" : "text/css",
    "js" : "text/javascript",
    "html":"text/html"
};

fs.readFile(realName, 'binary', function (err, file) {
    
    
     if (err) {
    
    
        response.writeHead(500, {
    
    'Context-type' : 'text/plain'});
       response.end(err);
     }
     else {
    
    

           var contentType = requestType[ext] || "text/plain";
           response.writeHead(200, {
    
    'Context-type' : contentType});
           response.write(file, 'binary');
           response.end();
     }
});

De cette manière, un simple serveur de ressources statiques HTTP est écrit.

Collez l'adresse du projet: github

Je suppose que tu aimes

Origine blog.csdn.net/wancheng815926/article/details/105596606
conseillé
Classement