0%

建立一個Node.js本機伺服器

開一個測試資料夾先,在裡面建立一個app.js的檔案,並用編輯器開啟

定義基本設定

接著在app.js裡寫入以下程式碼

1
2
3
const http = require('http')
const hostName = 'localhost'
const port = 3000

轉譯為:
先載入Node.js的 http 模組塊
並定義主機名稱,因為是在自己的電腦上所以通常慣例我們都叫localhost
再來定義連接埠號 port = 3000

接著要使用http模塊的createServer方式來建立伺服器,然後透過參數server來表達,
createServer需要有一個函數,他有兩個參數request(請求)跟response(回應)。

1
2
3
const server = http.createServer((req,res) => {

})

定義伺服器回應 HTTP response

觀念說明

大部分跟http伺服器有關的都會有兩個參數,request(請求)跟response(回應),
因為伺服器總得接收到request,然後才會給出response,不然無法進行,
req是由瀏覽器
req是由瀏覽器
req是由瀏覽器伺服器發出的請求

res則是經由我們設定回覆瀏覽器的東西
res則是經由我們設定回覆瀏覽器的東西
res則是經由我們設定回覆瀏覽器的東西

伺服器在回應時,通常會定義以下幾個資訊

  1. 回應的 HTTP 狀態碼 (status code)
  2. 設定回應的內容類型 Response Headers > Content-Type
  3. 把回應的內容傳送回去給瀏覽器 Response body > <html>...</html>

插播
HTTP 是 (HyperText Transfer Protocol 的縮寫)
HTTP 傳輸通訊協定就是電腦之間互相索取文件的溝通語言
當瀏覽器發出請求通常會定義幾個資訊,Method、URL、Header、Message Body


回正題,伺服器端回應HTTP response,通常會定義以下幾個資訊

  1. Status code(狀態碼)
    可以想像成客戶端與伺服器端之間的招呼語,重要的是開頭第一個數字:
  • 2XX:成功回應,例如 200
  • 3XX:重新轉向,例如 301 (永久轉向)、302 (暫時轉向)
  • 4XX:客户端錯誤回應,例如 404 Not Found (找不到資源)
  • 5XX:伺服器的問題,例如 500 Internal Server Error

我們先設定成功代碼

1
2
3
4
const server = http.createServer((req,res) => {
res.statusCode = 200

})
  1. 設定回應的內容類型,Response Headers > Content-Type
    一般都是用用瀏覽器看網頁,所以大部分內容類型是 HTML 文件 (text/html) 。
    但有些時候伺服器回傳的可能是純文字 (text/plain) 、PDF 檔 (application/pdf) 、影片檔 (video/mpeg4) 、或者是經常用來傳送資料的 JSON 檔 (application/json) …。

在來設定回應的內容類型,先以純文字來作回應

1
2
3
4
5
const server = http.createServer((req,res) => {
res.statusCode = 200
res.setHeader('Content-Type','text/plain')

})
  1. 設定要回應給瀏覽器的內容
    因為已經定義為純文字內容,所以先以純文字做回應,可以用**res.end()**來做回應
1
2
3
4
5
const server = http.createServer((req,res) => {
res.statusCode = 200
res.setHeader('Content-Type','text/plain')
res.end('Hi! This is my first Node.js server!')
})

啟動伺服器

最後我們要啟動伺服器,要求他監聽瀏覽器傳來的request(請求)
在node.js中我們可以使用在伺服器上使用

1
server.lisetn(port,serverName,() => {})

這個方法啟動伺服器需要port參數,serverName,和一個匿名函式

最後把一開始定義好的參數帶進去,並在匿名函式內可以console.log一段顯示訊息

1
2
3
4
5
6
7
8
9
const server = http.createServer((req, res) => {
res.statusCode = 200
res.setHeader('Content-Type', 'text/plain')
res.end('Hi! This is my first Node.js server!')
})

server.listen(port, hostName, () => {
console.log(`Server is running on http://${hostName}:3000!`)
})

接著回到在終端機上執行這個app.js
並且會得到伺服器啟動的訊息

然後用瀏覽器開啟拜訪 http://localhost:3000 就可以成功拜訪剛剛建立的伺服器。

也就是你透過瀏覽器 > 向你的電腦架設出來的伺服器發出請求 > 你的電腦回覆給瀏覽器 這樣一連串的動作。

Welcome to my other publishing channels