HTTP 也就是 Hypertext Transfer Protocol 超文本傳輸協議,不管是前端或後端,只要是在web 領域,HTTP協議都是必須掌握的技能之一。
http
模組是 Node.js 的核心模組之一,提供了創建 HTTP 伺服器和客戶端的功能。它基於流 (Stream) 和事件 (Event) 架構,能夠高效處理 HTTP 請求和回應。
在開始之前,還是再多整理一些基礎知識,畢竟這是一開始的初衷,不要停留在只是會用而已。
HTTP 是一個用來傳輸網頁內容的通訊協議,就像是瀏覽器和伺服器之間的"對話規則"。
簡單來說就是:
每次請求都是獨立的,伺服器不會記住之前的請求
客戶端發送請求 → 伺服器回應,一來一往,就像聊天對話
建立在可靠的網路連接基礎上,確保資料能正確傳達
一個HTTP請求包含三個部分:
請求行 (Request Line)
請求標頭 (Headers)
請求主體 (Body,可選)
GET /index.html HTTP/1.1
GET
: HTTP方法/index.html
: 要請求的資源路徑HTTP/1.1
: HTTP版本方法 | 用途 | 說明 |
---|---|---|
GET | 獲取資料 | 像是瀏覽網頁、看文章 |
POST | 提交資料 | 像是登入、註冊、發文 |
PUT | 更新資料 | 修改整個資源 |
DELETE | 刪除資料 | 刪除某個資源 |
PATCH | 部分更新 | 只修改資源的一部分 |
伺服器的回應也有固定格式:
狀態行 (Status Line)
響應標頭 (Headers)
響應主體 (Body)
HTTP/1.1 200 OK
HTTP/1.1
: HTTP版本200
: 狀態碼OK
: 狀態描述Host: www.example.com // 目標主機
User-Agent: Mozilla/5.0... // 瀏覽器資訊
Accept: text/html // 可接受的內容類型
Authorization: Bearer token // 身份驗證
Content-Type: text/html // 內容類型
Content-Length: 1024 // 內容長度
Set-Cookie: sessionId=abc123 // 設定Cookie
Cache-Control: max-age=3600 // 快取控制
最後簡單整理一個對照表
部分 | HTTP 請求 (Request) | HTTP 響應 (Response) |
---|---|---|
起始行 | Request Line<方法> <路徑> <HTTP版本> 例:GET /index.html HTTP/1.1 |
Status Line<HTTP版本> <狀態碼> <狀態文字> 例:HTTP/1.1 200 OK |
標頭 | Request Headers附帶請求資訊(誰在發送、能接受什麼)例:Host: www.example.com User-Agent: Mozilla/5.0 Authorization: Bearer abc123 |
Response Headers附帶回應資訊(伺服器身份、資料型態、快取、Cookie)例:Content-Type: application/json Content-Length: 85 Set-Cookie: sessionId=abc123 |
主體 | Request Body (可選)送往伺服器的資料,例如表單、JSON、檔案例:{ "username": "kelvin", "password": "123456" } |
Response Body (可選)伺服器回傳的資料,例如 HTML、JSON、圖片例:{ "message": "Login success", "user": { "id": 1, "name": "Kelvin" } } |