Node.js HTTP 模組
內建的 HTTP 模組
Node.js 有一個內建的模組叫做 HTTP,它允許 Node.js 透過超文字傳輸協議 (HTTP) 傳輸資料。
要包含 HTTP 模組,請使用 require()
方法
var http = require('http');
Node.js 作為 Web 伺服器
HTTP 模組可以建立一個 HTTP 伺服器,監聽伺服器埠並向客戶端返回響應。
使用 createServer()
方法建立 HTTP 伺服器
示例
var http = require('http');
// 建立一個伺服器物件
http.createServer(function (req, res) {
res.write('Hello World!'); // 向客戶端寫入響應
res.end(); // 結束響應
}).listen(8080); // 伺服器物件監聽 8080 埠
執行示例 »
傳遞給 http.createServer()
方法的函式將在有人嘗試訪問 8080 埠的計算機時執行。
將上面的程式碼儲存在一個名為“demo_http.js”的檔案中,然後執行它
執行 demo_http.js
C:\Users\Your Name>node demo_http.js
如果您按照相同的步驟在您的計算機上操作,您將看到與示例相同的結果: https://:8080
新增 HTTP 頭
如果 HTTP 伺服器的響應應該被顯示為 HTML,您應該包含一個帶有正確 Content-Type 的 HTTP 頭
示例
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('Hello World!');
res.end();
}).listen(8080);
執行示例 »
res.writeHead()
方法的第一個引數是狀態碼,200 表示一切正常,第二個引數是一個包含響應頭的物件。
讀取查詢字串
傳遞給 http.createServer()
的函式有一個 req
引數,它代表客戶端的請求,是一個物件(http.IncomingMessage 物件)。
該物件有一個名為“url”的屬性,其中包含域名後面的 URL 部分
demo_http_url.js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(req.url);
res.end();
}).listen(8080);
將上面的程式碼儲存在一個名為“demo_http_url.js”的檔案中,然後執行它
執行 demo_http_url.js
C:\Users\Your Name>node demo_http_url.js
如果您在計算機上按照相同的步驟操作,當您開啟這兩個地址時,您應該會看到兩個不同的結果
分割查詢字串
有內建模組可以輕鬆地將查詢字串分割成易讀的部分,例如 URL 模組。
示例
將查詢字串分割成易讀的部分
var http = require('http');
var url = require('url');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
var q = url.parse(req.url, true).query;
var txt = q.year + " " + q.month;
res.end(txt);
}).listen(8080);
將上面的程式碼儲存在一個名為“demo_querystring.js”的檔案中,然後執行它
執行 demo_querystring.js
C:\Users\Your Name>node demo_querystring.js
地址
https://:8080/?year=2017&month=July
在 Node.js URL 模組 章節中閱讀更多關於 URL 模組的資訊。