核心模組 - http.createServer() | Node.js

阿榮
發佈於前端
閱讀時間約 4 分鐘

目標:透過 node 的 http 模組來建立一個 web 伺服器 (web server)

web 伺服器 (web server)

web 伺服器又稱為網路伺服器或網頁伺服器。web 伺服器是一台託管一個或多個網站的電腦/電腦軟體。託管通常指的是將網站的文件和數據存在伺服器上,以便通過網路提供用戶訪問。當用戶跟 web 伺服器發送請求時,web 伺服器會傳送託管的網站給用戶。

簡略版:你想看的東西放在 web 伺服器那裡,跟它說一聲我要看,它把東西傳給你。

http 模組

node 本身就內建很多模組http 是其中一種,載入內建模組不用特別從資料夾中選擇,還是可以成功載入。

接下來,用 http.createServer() 開啟 web 伺服器。

createServer() 裡面放匿名函式,函式的參數通常命名為 request 和 response (也可以自訂),在函式內處理伺服器接收到的請求(request)和發送給客戶端的回應(response),例如範例中設置回應的標頭以及寫入內容並結束。

執行 app.js 檔,打開 http://localhost:8080/ (localhost 指本地主機) 來查看,就會看到頁面成功顯示 hello!!

var http = require('http'); // 載入 node 內建的 http 模組

http.createServer(function(request, response) {
console.log(request.url); // 取得請求的 url

response.writeHead(200, {"Content-Type": "text/plain"});
response.write('hello!!');
response.end();
}).listen(8080);

request 和 response

request 代表客戶端(通常是瀏覽器)向伺服器發送的 HTTP 請求。它包含了客戶端的一些資訊,例如請求的方法(GET、POST 等)、URL、標頭、以及任何在請求主體中包含的資料(比如表單數據)。
➡️客戶端向伺服器發送的請求,其中包含一些相關的資訊。

response: 代表伺服器給客戶端的回應。這個回應包含了伺服器要傳遞給客戶端的資源或者資訊,例如頁面的內容、圖片、文件等。回應也包含了 HTTP 狀態碼(例如200表示成功、404 表示找不到資源等)、回應標頭(例如 Content-Type 指定響應的內容類型)以及可能的回應主體(即頁面的內容或資源)。

➡️伺服器給客戶端的回應,其中包含一些相關的資訊。


可以透過瀏覽器的 DevTools 的 Network 查看 response 和 request 的相關資訊 (headers 等)。


Content-Type 很重要

瀏覽器會根據 server 給的 Content-Type 解析檔案,會影響呈現的結果。

舉例:寫入<h1>hello!!</h1>,把 Content-Type 分別寫 text/plaintext/html,最終分別得到 <h1>hello!!</h1>hello!!。(前後程式碼省略,實際寫記得打)

...
response.writeHead(200, {"Content-Type": "text/plain"});
response.write('<h1>hello!!</h1>');
...
...
response.writeHead(200, {"Content-Type": "text/html"});
response.write('<h1>hello!!</h1>');
...


8080 port 通訊埠

伺服器裡面的其中一個軟體,它會佔據電腦中其中一個 port,透過這個 port 來開啟應用程式的內容。

AI 解釋:電腦就像一棟大樓,8080 就像是這棟大樓的其中一個房間號碼。當你想要訪問不同的網路服務時,就需要知道我們要存取哪一個「房間號碼」。通常網頁瀏覽服務會使用 80 號房間,這是一個默認和眾所周知的房間號。但有時候 80 號房間已經被其他服務佔用了,這時我們就需要使用備用的房間號碼,比如 8080 號房間。

有些埠號已經被其他協定和服務佔據了,可以查看通訊埠列表


學習資源


主要放程式學習筆記,分享 Creative Coding 相關內容、作品
留言0
查看全部
發表第一個留言支持創作者!
圖片最佳化 | 前端效能優化
閱讀時間約 3 分鐘
Node.js 和 V8 引擎簡介 | Node.js
閱讀時間約 1 分鐘
安裝 Node.js 流程 | Node.js
閱讀時間約 1 分鐘
簡單測試 Node.js | Node.js
閱讀時間約 1 分鐘
Global 物件和模組 | Node.js
閱讀時間約 2 分鐘
你可能也想看
溫尼考特的理論模組與主要概念——摘自《溫尼考特的語言:通往核心概念的23個關鍵字》對於人類狀態(human condition)以及身為主體的意義為何的關注,貫穿溫尼考特的所有作品。從非常早期開始,他的所有提問就全是關於生命的意義,以及這意義當中的什麼讓生命值得去活。他在作品中逐漸把精神分析牢牢放進人類天性(human nature)的框架裡。
Thumbnail
avatar
心靈工坊文化
2024-01-04
核心能力與核心競爭力不匹配:新創常犯的錯誤/程天縱許多創業者會把有限的資源,投放在與「核心競爭力」無關的「核心能力」上。如果這兩者不能妥善匹配,對大企業造成的傷害還不是很大;但是對新創或小企業造成的傷害,可能就是公司滅亡。
Thumbnail
avatar
吐納商業評論
2021-10-13
核心中的核心肌肉,你覺得是誰?核心中的核心肌肉,你覺得是誰呢? 或許有些人認為是腹肌、有些人認為是足弓、有些人認為是...... 其實,你們都沒有錯哦!看從什麼角度來切入。
Thumbnail
avatar
Andy | 運動防護員 | 訓練師
2021-08-24
小說創作者的心法和心魔:別相信任何人!身為一個寫作者,多去找別人的經驗做為參考座標是很重要的,但若完全相信,是很危險的一件事。因此老師強調寫作者必須做到別相信任何人。
Thumbnail
avatar
沐謙
2020-11-16
核心整理思維:落入慣性思考,收納整理永遠沒完沒了!「整理」這件事其實就是一個「解決問題」的過程,只是往往我們在談的整理多半是有關「生活環境」的面向,有些人可能很會解決工作面向的問題,但一換成生活面向的問題時卻常常卡住,這不是很奇怪嗎(XD)! 我們猜想很多人在學習不同領域的事物時,很容易會認為不同領域的方法和技術一定是不一樣的,但很多道理可能都是
Thumbnail
avatar
布蘭達&維尼
2020-09-11
核心肌群到底在哪裡?|一步步組裝你的核心!有很多原因都會產生腰部疼痛 其中最常見的就是腰椎椎間盤突出造成的神經壓迫 這樣的疼痛就會讓表層大肌肉僵硬,深層小肌肉無力 進而讓腰椎變的歪歪的、晃晃的 更容易產生椎間盤突出,再度造成壓迫 這就是貝克常講的「惡性循環」 如果不想辦法解決,問題只會越來越糟 所以當你找過物理治療師幫你評估、做治療
Thumbnail
avatar
物治貝克
2020-06-04
核心是說服 運動肺功能檢查在心臟復健領域是一個重要的檢查,不僅可以算出個人化的運動處方,還可以探查運動限制,是一般靜態檢查無法取代的資料。近年來,隨著心衰竭的照護逐漸完整,這個檢查也漸漸備受重視,因為可以用
Thumbnail
avatar
黃心怡
2019-02-07
avatar
吐納商業評論
2017-08-04