用node搭建一個本地http服務器。首先了解htpp服務器原理
HTTP協議定義Web客戶端如何從Web服務器請求Web頁面,以及服務器如何把Web頁面傳送給客戶端。HTTP協議采用了請求/響應模型。客戶端向服務器發送一個請求報文,請求報文包含請求的方法、URL、協議版本、請求頭部和請求數據。服務器以一個狀態行作為響應,響應的內容包括協議的版本、成功或者錯誤代碼、服務器信息、響應頭部和響應數據。下圖表明了這種請求/響應模型。
以下是HTTP請求/響應的步驟:
(1)客戶端連接到Web服務器
一個HTTP客戶端,通常是瀏覽器,與Web服務器的HTTP端口(默認為80)建立一個TCP套接字連接。例如,http://www.oakcms.cn。
(2)發送HTTP請求
通過TCP套接字,客戶端向Web服務器發送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求數據4部分組成。
(3)服務器接受請求並返回HTTP響應
Web服務器解析請求,定位請求資源。服務器將資源復本寫到TCP套接字,由客戶端讀取。一個響應由狀態行、響應頭部、空行和響應數據4部分組成。
(4)釋放連接TCP連接
Web服務器主動關閉TCP套接字,釋放TCP連接;客戶端被動關閉TCP套接字,釋放TCP連接。
(5)客戶端瀏覽器解析HTML內容
客戶端瀏覽器首先解析狀態行,查看表明請求是否成功的狀態代碼。然后解析每一個響應頭,響應頭告知以下為若干字節的HTML文檔和文檔的字符集。客戶端瀏覽器讀取響應數據HTML,根據HTML的語法對其進行格式化,並在瀏覽器窗口中顯示。
目前最主流的三個Web服務器是Apache、Nginx
Web 應用架構
-
Client - 客戶端,一般指瀏覽器,瀏覽器可以通過 HTTP 協議向服務器請求數據。
-
Server - 服務端,一般指 Web 服務器,可以接收客戶端請求,並向客戶端發送響應數據。
-
Business - 業務層, 通過 Web 服務器處理應用程序,如與數據庫交互,邏輯運算,調用外部程序等。
-
Data - 數據層,一般由數據庫組成。
使用node去實現一個簡單的http服務器很容易
1.監聽瀏覽器端口(http模塊)
2.獲取請求的url(服務器端文件處理獲取指定文件 fs文件模塊)
3.返回數據
創建項目目錄
在項目目錄下新建一個test.js,寫入
var http=require('http'); //開啟服務 var server=http.createServer(function(req,res){ console.log('有客戶端連接');//創建連接成功顯示在后台 res.writeHeader(200,{ 'content-type' : 'text/html;charset="utf-8"' }); res.write('這是正文部分');//顯示給客戶端 res.end(); }).listen(8888); console.log('服務器開啟成功');
在項目下下運行
node server.js
然后在瀏覽器端輸入127.0.0.1:8888
輸出
這是正文部分
現在大概理解怎么去實現http服務器了吧
好了現在開始
var http=require('http'); var fs=require('fs'); var root="E:/HBspace/node/" //開啟服務 var server=http.createServer(function(req,res){ var url=req.url; var file = root+url; fs.readFile(file,function(err,data){ if(err){ res.writeHeader(404,{ 'content-type' : 'text/html;charset="utf-8"' }); res.write('<h1>404錯誤</h1><p>你要找的頁面不存在</p>'); res.end(); }else{ res.writeHeader(200,{ 'content-type' : 'text/html;charset="utf-8"' }); res.write(data);//將index.html顯示在客戶端 res.end(); } }) }).listen(8888); console.log('服務器開啟成功');
引入fs模塊用來讀取文件
在項目目錄下新建一個index.html 寫入hello world
運行 node server.js
so easy一個簡單http服務器就實現了