中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何搭建nodejs http服務器

發布時間:2021-07-13 14:15:01 來源:億速云 閱讀:142 作者:小新 欄目:web開發

這篇文章主要介紹如何搭建nodejs http服務器,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

搭建簡單的nodejs服務器

通過一些簡單配置我們就可以搭建一臺基于nodejs的http服務器

通過switch配置url路由的方法

// 這是一個簡單的Node HTTP服務器,能處理當前目錄的文件
// 并能實現兩種特殊的URL用于測試
// 用HTTP://localhost:8000或http://127.0.0.1:8000連接這個服務器

// 首先加載所有需要用到的模塊
var http = require('http');    // 加載http服務api模塊
var fs = require('fs');      // 加載fs文件服務api模塊
var server = new http.Server();  // 創建新的HTTP服務器
var urlapi = require('url');    // 創建url路由api模塊
server.listen(8000);       // 監聽端口8000

// 使用on方法注冊事件處理,該事件一直被監聽,任何的請求都會進入回調函數,執行相應的操作
server.on('request', function(request, response) { // 當有request請求的時候觸發處理函數  
  // 解析請求的URL
  var url = urlapi.parse(request.url);

  //監聽請求的網站,以當前腳本目錄為根目錄的url地址
  console.log(url.pathname);

  // 特殊URL會讓服務器在發送響應前先等待
  switch(url.pathname) {  //判斷請求的路徑信息
  case ''||'/' : // 處理請求的網站根目錄,指定加載對應的文件夾,一般以根目錄的index.html為默認,nodejs是高效流處理的方案,也可以通過配置文件來配置
    fs.readFile("./page/index.html", function(err, content){ //打開請求的文件
      if(err) { //輸出錯誤信息,也可以自定義錯誤信息
        response.writeHead(404, { 'Content-Type':'text/plain; charset="UTF-8"' });
        response.write(err.message);
        response.end();
      } else { //請求成功返回數據
        response.writeHead(200, { 'Content-Type' : 'text/html; charset=UTF-8' }); //告訴相應頭文件,返回數據的類型
        response.write(content); //返回的內容,有時候還會加上buter數據類型
        response.end(); //結束響應,不寫的話,會一直處于響應狀態,頁面不會顯示內容
      }
    });
    break;
  case '/test/delay':// 此處用于模擬緩慢的網絡連接
    // 使用查詢字符串來獲取延遲時長,或者2000毫秒
    var delay = parseInt(url.query) || 2000;
    // 設置響應狀態和頭
    response.writeHead(200, {'Content-type':'text/plain; charset=UTF-8'});
    // 立即開始編寫響應主體
    response.write('Sleeping for' + delay + ' milliseconds...');
    // 在之后調用的另一個函數中完成響應
    setTimeout(function(){
      response.write('done.');
      response.end();
    }, delay);
    break;

  case '/test/mirror':// 如果請求是test/mirror,則原文返回它
    // 響應狀態和頭
    response.writeHead(200, {'Content-type':'text/plain; charset=UTF-8'});
    // 用請求的內容開始編寫響應主體
    response.write(request.mothod + ' ' + request.url + ' HTTP/' + request.httpVersion + '\r\n');
    // 所有的請求頭
    for (var h in request.headers) {
      response.write(h + ':' + request.headers[h] + '\r\n');
    }
    response.write('\r\n');// 使用額外的空白行來結束頭
    // 在這些事件處理程序函數中完成響應
    // 當請求主體的數據塊完成時,把其寫入響應中
    request.on('data', function(chunk) { response.write(chunk); });
    // 當請求結束時,響應也完成
    request.on('end', function(chunk){ response.end(); });
    break;

  case '/json' : // 模擬JSON數據返回
    // 響應狀態和頭
    response.writeHead(200, {'Content-type':'application/json; charset=UTF-8'});
    response.write(JSON.stringify({test:'success'}));
    response.end();
    break;

  default:// 處理來自本地目錄的文件,主要是一些靜態資源文件,搭建靜態服務器還有其他的方法
    var filename = url.pathname.substring(1);  // 去掉前導'/'
    var type = getType(filename.substring(filename.lastIndexOf('.')+1));
    console.log(filename); //取得文件類型 css  js ....
    // 異步讀取文件,并將內容作為單獨的數據模塊傳給回調函數
    // 對于確實很大的文件,使用流API fs.createReadStream()更好
    fs.readFile(filename, function(err, content){
      if(err) {
        response.writeHead(404, { 'Content-Type':'text/plain; charset="UTF-8"' });
        response.write(err.message);
        response.end();
      } else {
        response.writeHead(200, { 'Content-Type' : type });
        response.write(content);
        response.end();
      }
    });
    break;
  }   
});

//這里定義了一個用來判斷文件類型的函數
function getType(endTag){
  var type=null;
  switch(endTag){
  case 'html' :
     type = 'text/html; charset=UTF-8';
    break;
  case 'htm' :
    type = 'text/html; charset=UTF-8';
    break;
  case 'js' : 
    type = 'application/javascript; charset="UTF-8"';
    break;
  case 'css' :
    type = 'text/css; charset="UTF-8"';
    break;
  case 'txt' :
    type = 'text/plain; charset="UTF-8"';
    break;
  case 'manifest' :
    type = 'text/cache-manifest; charset="UTF-8"';
    break;
  default :
    type = 'application/octet-stream';
    break;
  }
  return type;
}

以上是“如何搭建nodejs http服務器”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南安市| 舟山市| 大悟县| 云龙县| 专栏| 开江县| 衡阳市| 冀州市| 云南省| 桐庐县| 遂平县| 九龙城区| 封丘县| 台南县| 岱山县| 漳浦县| 新田县| 江口县| 惠水县| 铜川市| 德格县| 江川县| 天柱县| 修武县| 栾川县| 吴江市| 满洲里市| 崇文区| 台南市| 株洲市| 长汀县| 温泉县| 惠水县| 营口市| 仁怀市| 太湖县| 泾阳县| 铁力市| 西平县| 宝鸡市| 巴里|