国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

搭建簡單的nodejs http服務器詳解

2019-11-19 17:12:31
字體:
來源:轉載
供稿:網友

搭建簡單的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;}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 济阳县| 宁乡县| 陆良县| 彭泽县| 阳泉市| 桐梓县| 阳原县| 万宁市| 根河市| 天祝| 家居| 石景山区| 太保市| 峨边| 彭州市| 许昌市| 淮阳县| 台州市| 搜索| 滦平县| 云霄县| 犍为县| 南靖县| 家居| 灯塔市| 湘乡市| 周至县| 岢岚县| 方正县| 襄樊市| 江陵县| 博罗县| 买车| 长沙县| 屏东市| 绥滨县| 多伦县| 晋中市| 寻乌县| 沂南县| 柘城县|