構建一個Node.js HTTP服務器
上一篇文章介紹了最基本的Node.js程序。雖然“Hello World”程序很好,但Node.js更常用於創建高度可擴展的服務器應用程序。本文介紹一個基於Node.js構建的簡單HTTP服務器。
關鍵要點
- Node.js允許創建簡單的HTTP服務器,關鍵步驟是創建新文件,插入適當的代碼並運行服務器。可以通過Web瀏覽器通過localhost或機器的IP地址訪問服務器。
- 服務器的功能建立在
require()
方法(加載模塊)和http
模塊的createServer()
方法(創建服務器並為每個新請求執行回調函數)之上。回調函數使用兩個參數(請求和響應)來處理客戶端請求並返回數據。 - 服務器使用
response.writeHead()
方法將HTTP狀態代碼和響應頭髮送回客戶端,使用response.write()
寫入HTML頁面,並使用response.end()
結束響應。服務器使用listen()
方法偵聽傳入連接。目前,服務器只能返回單個HTML頁面,未來的增強功能可能包括從文件系統讀取網頁和整合HTTP身份驗證。
運行服務器
首先,創建一個名為“web_server.js”的新文件。將以下代碼插入文件並保存:
var http = require("http"); var server = http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/html"}); response.write("<!DOCTYPE html>"); response.write("<html>"); response.write("<head>"); response.write("<title>Hello World Page</title>"); response.write("</head>"); response.write("<body>"); response.write("Hello World!"); response.write("</body>"); response.write("</html>"); response.end(); }); server.listen(80); console.log("Server is listening");
要啟動服務器,請鍵入以下命令。如果一切正常,您將看到一條消息,表明服務器正在監聽。請注意,示例服務器嘗試綁定到端口80(標準HTTP端口)。如果此端口已被使用或在您的機器上受到限制,您將遇到錯誤。
node web_server.js
下一步是使用Web瀏覽器連接到服務器。啟動您選擇的瀏覽器,並將其定向到以下任一鏈接。在網絡術語中,localhost(及其IP地址127.0.0.1)指的是您當前使用的機器。您的瀏覽器應該顯示“Hello World!”。
<code>http://localhost http://127.0.0.1</code>
服務器的工作原理
現在服務器已啟動並運行,是時候分析代碼了。首先要注意的是第1行的require()
調用。 Node.js提供了一個簡單的模塊系統,擁有龐大的開發者社區。 Node.js程序可以使用require()
方法加載單個模塊。雖然許多模塊必須下載,但有些模塊(例如http
)包含在Node.js安裝中。在第2行,使用http
模塊的createServer()
方法創建HTTP服務器。與大多數Node.js函數一樣,createServer()
將回調函數作為參數。每次服務器接收到新請求時,都會執行此回調函數。回調函數接受兩個參數:請求和響應。請求對象包含有關客戶端請求的信息,例如URL、HTTP頭等等。類似地,響應對像用於將數據返回給客戶端。回調函數首先調用response.writeHead()
方法。此方法將HTTP狀態代碼和一組響應頭髮送回客戶端。狀態代碼用於指示請求的結果。例如,每個人以前都遇到過404錯誤,表示找不到頁面。示例服務器返回代碼200,表示成功。除了狀態代碼外,服務器還會返回許多HTTP頭,這些頭定義了響應的參數。如果您未指定頭,Node.js將隱式地為您發送它們。示例服務器僅指定Content-Type
頭。此特定頭定義了響應的MIME類型。對於HTML響應,MIME類型為“text/html”。接下來,服務器執行對response.write()
的幾次調用。這些調用用於寫入HTML頁面。默認情況下,使用UTF-8字符編碼。從技術上講,所有這些調用都可以組合成單個調用以提高性能。但是,對於這樣一個簡單的示例,為了代碼的可讀性,犧牲了性能。寫入HTML頁面後,將調用response.end()
方法。通過調用此方法,我們告訴服務器響應頭和正文已發送,並且請求已完成。示例服務器在沒有參數的情況下調用end()
。但是,如果只需要一次調用,end()
也可以像write()
一樣調用。第15行的listen()
調用使服務器綁定到端口並偵聽傳入連接。計算機有數千個端口,充當通信端點。為了連接到服務器,客戶端必須確切知道服務器正在偵聽哪個端口。端口由端口號標識,HTTP服務器通常偵聽端口80。
結論
本文介紹了一個非常基本的HTTP服務器。在其當前狀態下,服務器只能返回單個HTML頁面。在接下來的幾週內,我們將深入探討Node.js的世界,探索其他功能,例如從文件系統讀取網頁和整合HTTP身份驗證。
Node.js創建HTTP服務器的常見問題解答(FAQ)
Node.js中‘http.createServer()’方法的用途是什麼?
http.createServer()
方法是Node.js中用於創建HTTP服務器新實例的內置函數。此服務器偵聽傳入請求並發送響應。它將一個requestListener
函數作為參數,該函數會自動添加到“request”事件。每次服務器收到請求時,都會調用此函數。 requestListener
函數有兩個參數:request
(http.IncomingMessage
的實例)和response
(http.ServerResponse
的實例)。
Node.js中‘response.writeHead()’方法是如何工作的?
response.writeHead()
方法是Node.js中用於向請求發送響應頭的函數。該方法接受兩個參數:狀態代碼和表示響應頭的普通對象。狀態代碼是3位HTTP狀態代碼,第二個參數是一個對象,其中每個鍵值對錶示一個頭名稱及其值。此方法必須在response.end()
之前調用,並且每個響應只能調用一次。
Node.js中‘write’和‘writeHead’的區別是什麼?
Node.js中的write
和writeHead
方法都用於發送服務器響應的過程。 writeHead
方法用於發送HTTP狀態代碼和一組響應頭,而write
方法用於向客戶端發送響應正文。 writeHead
方法應該在write
之前調用,兩者都應該在end
之前調用,end
向服務器發出信號,表明所有響應頭和正文都已發送。
如何在Node.js中使用‘node-http-server’包?
node-http-server
是Node.js的一個簡單易配置的HTTP或HTTPS服務器。要使用它,您首先需要使用npm(Node包管理器)通過運行npm install node-http-server
來安裝它。安裝後,您可以在Node.js文件中引入它,並使用其deploy
方法啟動服務器。 deploy
方法將配置對像作為參數,您可以在其中指定服務器選項,例如端口、根和serverIndex。
如何在Node.js中處理HTTP請求和響應?
在Node.js中,您可以使用http
模塊處理HTTP請求和響應。首先,您需要使用http.createServer()
方法創建一個HTTP服務器。此方法將回調函數作為參數,每次服務器收到請求時都會執行該函數。回調函數有兩個參數:request
和response
。 request
對象可用於獲取有關客戶端請求的信息,例如URL、HTTP頭和有效負載。 response
對像用於向客戶端發送響應。您可以使用response.writeHead()
方法設置HTTP狀態代碼和頭,使用response.write()
方法編寫響應正文,並使用response.end()
方法結束響應。
以上是在Node.js中創建HTTP服務器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript字符串替換方法詳解及常見問題解答 本文將探討兩種在JavaScript中替換字符串字符的方法:在JavaScript代碼內部替換和在網頁HTML內部替換。 在JavaScript代碼內部替換字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 該方法僅替換第一個匹配項。要替換所有匹配項,需使用正則表達式並添加全局標誌g: str = str.replace(/fi

利用輕鬆的網頁佈局:8 ESTISSEL插件jQuery大大簡化了網頁佈局。 本文重點介紹了簡化該過程的八個功能強大的JQuery插件,對於手動網站創建特別有用

因此,在這裡,您準備好了解所有稱為Ajax的東西。但是,到底是什麼? AJAX一詞是指用於創建動態,交互式Web內容的一系列寬鬆的技術。 Ajax一詞,最初由Jesse J創造

10款趣味橫生的jQuery遊戲插件,讓您的網站更具吸引力,提升用戶粘性!雖然Flash仍然是開發休閒網頁遊戲的最佳軟件,但jQuery也能創造出令人驚喜的效果,雖然無法與純動作Flash遊戲媲美,但在某些情況下,您也能在瀏覽器中獲得意想不到的樂趣。 jQuery井字棋遊戲 遊戲編程的“Hello world”,現在有了jQuery版本。 源碼 jQuery瘋狂填詞遊戲 這是一個填空遊戲,由於不知道單詞的上下文,可能會產生一些古怪的結果。 源碼 jQuery掃雷遊戲

本教程演示了創建通過Ajax加載的動態頁面框,從而可以即時刷新,而無需全頁重新加載。 它利用jQuery和JavaScript。將其視為自定義的Facebook式內容框加載程序。 關鍵概念:Ajax和JQuery

本教程演示瞭如何使用jQuery創建迷人的視差背景效果。 我們將構建一個帶有分層圖像的標題橫幅,從而創造出令人驚嘆的視覺深度。 更新的插件可與JQuery 1.6.4及更高版本一起使用。 下載

此JavaScript庫利用窗口。名稱屬性可以管理會話數據,而無需依賴cookie。 它為瀏覽器中存儲和檢索會話變量提供了強大的解決方案。 庫提供了三種核心方法:會話


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3漢化版
中文版,非常好用

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版