開一個測試資料夾先,在裡面建立一個app.js的檔案,並用編輯器開啟
定義基本設定
接著在app.js裡寫入以下程式碼
1 | const http = require('http') |
轉譯為:
先載入Node.js的 http 模組塊
並定義主機名稱,因為是在自己的電腦上所以通常慣例我們都叫localhost
再來定義連接埠號 port = 3000
接著要使用http模塊的createServer方式來建立伺服器,然後透過參數server來表達,
createServer需要有一個函數,他有兩個參數request(請求)跟response(回應)。
1 | const server = http.createServer((req,res) => { |
定義伺服器回應 HTTP response
觀念說明
大部分跟http伺服器有關的都會有兩個參數,request(請求)跟response(回應),
因為伺服器總得接收到request,然後才會給出response,不然無法進行,
req是由瀏覽器
req是由瀏覽器
req是由瀏覽器向伺服器發出的請求
res則是經由我們設定回覆給瀏覽器的東西
res則是經由我們設定回覆給瀏覽器的東西
res則是經由我們設定回覆給瀏覽器的東西
伺服器在回應時,通常會定義以下幾個資訊
- 回應的 HTTP 狀態碼 (status code)
- 設定回應的內容類型 Response Headers > Content-Type
- 把回應的內容傳送回去給瀏覽器 Response body >
<html>...</html>
插播
HTTP 是 (HyperText Transfer Protocol 的縮寫)
HTTP 傳輸通訊協定就是電腦之間互相索取文件的溝通語言
當瀏覽器發出請求通常會定義幾個資訊,Method、URL、Header、Message Body
回正題,伺服器端回應HTTP response,通常會定義以下幾個資訊
- Status code(狀態碼)
可以想像成客戶端與伺服器端之間的招呼語,重要的是開頭第一個數字:
- 2XX:成功回應,例如 200
- 3XX:重新轉向,例如 301 (永久轉向)、302 (暫時轉向)
- 4XX:客户端錯誤回應,例如 404 Not Found (找不到資源)
- 5XX:伺服器的問題,例如 500 Internal Server Error
我們先設定成功代碼
1 | const server = http.createServer((req,res) => { |
- 設定回應的內容類型,Response Headers > Content-Type
一般都是用用瀏覽器看網頁,所以大部分內容類型是 HTML 文件 (text/html) 。
但有些時候伺服器回傳的可能是純文字 (text/plain) 、PDF 檔 (application/pdf) 、影片檔 (video/mpeg4) 、或者是經常用來傳送資料的 JSON 檔 (application/json) …。
在來設定回應的內容類型,先以純文字來作回應
1 | const server = http.createServer((req,res) => { |
- 設定要回應給瀏覽器的內容
因為已經定義為純文字內容,所以先以純文字做回應,可以用**res.end()**來做回應
1 | const server = http.createServer((req,res) => { |
啟動伺服器
最後我們要啟動伺服器,要求他監聽瀏覽器傳來的request(請求)
在node.js中我們可以使用在伺服器上使用
1 | server.lisetn(port,serverName,() => {}) |
這個方法啟動伺服器需要port參數,serverName,和一個匿名函式
最後把一開始定義好的參數帶進去,並在匿名函式內可以console.log一段顯示訊息
1 | const server = http.createServer((req, res) => { |
接著回到在終端機上執行這個app.js
並且會得到伺服器啟動的訊息
然後用瀏覽器開啟拜訪 http://localhost:3000 就可以成功拜訪剛剛建立的伺服器。
也就是你透過瀏覽器 > 向你的電腦架設出來的伺服器發出請求 > 你的電腦回覆給瀏覽器 這樣一連串的動作。