HTTP 教學

HTTP 教學 系列,依使用情境分為六大章 (擴充中 😅),

從最簡易的 URI、資源、表示 (表徵)…,

慢慢帶入 編碼、中介、快取…甚至流量監控 與 訊息追蹤。
 
其中,也花費許多篇幅探討背後的指導原則 — REST 架構風格

許多人誤將 REST 視為 just『 CRUD + URL 』,

而忽略其解耦與設計權衡的精髓,較為可惜 🙁。
 
全系列以 RFC 7230 ~ RFC 7235 規範而著,

並以 Roy Thomas 的 REST 論文為輔,

期望給您最正確、標準的 HTTP 介紹 😃。
 
 

一、介面

HTTP/1.1 — 超文本傳輸協定 (Hypertext Transfer Protocol)

HTTP (Hypertext Transfer Protocol) 超文本傳輸 ...
閱讀更多…
/ HTTP

HTTP/1.1 — (1-2) 角色 (Client、Server)

客戶端 (Client),指用來發起連線, 建構並發出 一或多個 請求 (req ...
閱讀更多…
/ HTTP
DIP-electricity-ex

HTTP/1.1 — (1-3) 統一介面 (Uniform Interface)

客戶-伺服端 (Client-Server),或俗稱 主從式架構 (我不太喜歡這 ...
閱讀更多…
/ HTTP

二、資源、表示、URI

browser-URL

HTTP/1.1 — (2-1) 統一資源識別符 (URI)

在 (1-3) 統一介面 (Uniform Interface) 中,我們介紹了 ...
閱讀更多…
/ HTTP
jason-html

HTTP/1.1 — (2-2) 資源、表示、URI

首先釐清一個觀念: 資源 (resource),是對一實體集合的『概念』映射 ( ...
閱讀更多…
/ HTTP
web-resources

HTTP/1.1 — (2-3) URI 設計 (URI Design)

統一資源識別符 (URI) 是 Web 架構中最簡單的元素,也是最重要的 ! 良 ...
閱讀更多…
/ HTTP

三、訊息、表示、酬載

http-request-message

HTTP/1.1 — (3-1) 訊息格式 (Message Format)

HTTP 透過 統一的介面 (uniform interface), Clien ...
閱讀更多…
/ HTTP

HTTP/1.1 — (3-2) 表示 — Content-Type, Content-Encoding…

(2-2) 資源、表示、URI: 表示 (representation) ...
閱讀更多…
/ HTTP
negotiation

HTTP/1.1 — (3-3) 內容協商 (Content Negotiation)

一個 資源,可能具有不同的 表示 (representation) 方式 (不同 ...
閱讀更多…
/ HTTP

HTTP/1.1 — (3-4) 酬載 — Content-Length, Transfer-Encoding…

資料酬載 (payload) 或稱 酬載、有效載荷, 是傳輸時 實際預期的資料, ...
閱讀更多…
/ HTTP

(補充) 以 JavaScript 發送 HTTP 請求

第三 ~ 四章 開始變得抽象,對於新手較不易理解,

因此以一實用範例,教您『 以 JavaScript 操作 HTTP,與 後端 API 進行溝通 』,

最後,解析回應 的 JSON 資料,並以之 渲染頁面
 
(2017/08/01 補充)
 

jQuery Ajax — JavaScript 發送 HTTP 請求 (II)

此系列主要討論 JavaScript 發 ...
閱讀更多…
Fetch-API

Fetch API — JavaScript 發送 HTTP 請求 (III)

此系列主要討論 JavaScript 發 ...
閱讀更多…

四、請求/回應 (Request/Response)

HTTP/1.1 — (4-1) 請求方法、安全性、冪等性

(2-3) URI 設計 (URI Design) 提到, HTTP 其中一個設 ...
閱讀更多…
/ HTTP
get-vs-post

HTTP/1.1 — (4-2) GET vs. POST

本篇 GET vs. POST,主要介紹 GET 與 POST 的差異、性質,及 ...
閱讀更多…
/ HTTP

HTTP/1.1 — (4-3) HEAD、PUT、DELETE

目錄HEAD屬性 (property)PUT屬性 (property)參數 與 ...
閱讀更多…
/ HTTP

HTTP/1.1 — (4-4) 發送請求 (Node.js、Postman、Insomnia 與 HTTP Prompt)

請求訊息發送者,別名為 — — HTTP Client, ...
閱讀更多…
/ HTTP

HTTP/1.1 — (4-5) 以 C Socket 實作 HTTP Client

至今已介紹了 利用 表單 與其 方法欺騙 的方式送出請求, 以及 JavaScr ...
閱讀更多…
/ HTTP, Socket
HTTP Response Code Cheatsheet

HTTP/1.1 — (4-6) 回應狀態碼 (Response Status Codes)

回應狀態碼 (Response Status Codes), 是由 3 個十進位 ...
閱讀更多…
/ HTTP

五、分層系統 (Layered System)

中介 (Intermediaries) 示意圖

HTTP/1.1 — (5-1) 訊息路由 (Message Routing)

中介 (Intermediaries) 示意圖 請求: HTTP 請求訊息路由, ...
閱讀更多…
/ HTTP
proxy

HTTP/1.1 — (5-2) 代理 (proxy)、隧道 (tunnel) 與 閘道 (gateway)

HTTP 允許使用 中介 (Intermediary): 以 連接鏈 (chai ...
閱讀更多…
/ HTTP

HTTP/1.1 — (5-3) 流量監控 (Traffic Monitor)

Photo by Fiddler. (5-2) 代理 (proxy)、隧道 (t ...
閱讀更多…
/ HTTP

HTTP/1.1 — (5-4) 訊息追蹤 (Message Tracing)

(5-2) 代理 (proxy)、隧道 (tunnel) 與 閘道 (gatew ...
閱讀更多…
/ HTTP

HTTP/1.1 — (5-5) 虛擬主機 (Virtual Host)

如 (2-1) 統一資源識別符 (URI) 所述, Client 會先透過 名稱 ...
閱讀更多…
/ HTTP

六、快取 (Cache)

HTTP/1.1 — (6-1) 快取 (Cache)

最好的請求,是不必與伺服器進行通訊的請求。 — Google web ...
閱讀更多…
/ HTTP

HTTP/1.1 — (6-2) 免網路請求 !! — 新鮮回應 (fresh response)

就像食品擁有 保存期限,快取 (Cache) 擁有一段 新鮮時限 (freshn ...
閱讀更多…
/ HTTP

HTTP/1.1 — (6-3) 何時驗證快取 ? — 陳舊回應 ? no-cache, no-store ?

當 快取 (回應) 以 顯式、啟發式 計算為過期,則稱 陳舊回應 (Stale ...
閱讀更多…
/ HTTP

HTTP/1.1 — (6-4) 驗證快取 !! — 條件請求 (Conditional Requests)

所謂 驗證 (Validate) 或 重新驗證 (revalidate), 即是 ...
閱讀更多…
/ HTTP