Methods
GET 取得資料、POST 新增、PUT 覆蓋、PATCH 局部更新、DELETE 刪除。
HTTP(HyperText Transfer Protocol)是瀏覽器與伺服器對話時最重要的規則。 它規定了 request 長什麼樣子、response 該怎麼回、回傳狀態代表什麼,以及資料要用什麼格式描述。
| 部分 | 內容 | 例子 |
|---|---|---|
| Start Line | 說明方法、路徑、版本,或狀態碼與版本 | GET / HTTP/1.1 / HTTP/1.1 200 OK |
| Headers | 描述請求或回應的附加資訊 | Host、Content-Type、Cache-Control |
| Body | 真正傳送的資料 | HTML、JSON、表單資料、圖片 |
GET 取得資料、POST 新增、PUT 覆蓋、PATCH 局部更新、DELETE 刪除。
200 成功、301 重新導向、404 找不到、500 伺服器錯誤,是最常見的回應訊號。
補充描述資料內容、快取策略、授權資訊、Cookie、來源等,是 HTTP 的控制面板。
| 類別 | 代表狀態碼 | 意義 |
|---|---|---|
| 1xx | 101 | 資訊性回應,流程仍在進行中 |
| 2xx | 200、201、204 | 請求成功 |
| 3xx | 301、302、304 | 需要重新導向或可使用快取 |
| 4xx | 400、401、403、404 | 用戶端請求有問題 |
| 5xx | 500、502、503 | 伺服器處理失敗 |
HTTPS = HTTP + TLS。它的目標是讓資料在網路中傳輸時具備: 加密性、完整性、身分驗證。 換句話說,別人不容易偷看內容、亂改內容,也能確認你連到的是正確的網站。
這是最典型、也最值得學生先學會閱讀的一組 HTTP 對話。
GET /index.html HTTP/1.1
Host: web.demo
Accept: text/html
Accept-Language: zh-TW
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: max-age=60
Content-Length: 128
<h1>Welcome</h1>
<p>This page is served by a web server.</p>
This page is served by a web server.
Host 告訴伺服器你要連的是哪個網站。Accept 表示瀏覽器偏好接收的內容類型。Content-Type 告訴瀏覽器 body 裡面是 HTML。Cache-Control 影響瀏覽器是否可以暫存內容。API 不一定回 HTML,它也常回傳 JSON 給前端 JavaScript 使用。
POST /api/messages HTTP/1.1
Host: api.demo
Content-Type: application/json
{
"author": "Student",
"message": "Hello server"
}
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 101,
"status": "saved"
}
{
"id": 101,
"status": "saved"
}
Content-Type 要寫成 application/json。201 Created 表示伺服器成功建立了一筆新資料。Network。Headers、Status Code、Response 與本章學的名詞。curl -i http://127.0.0.1:8000/。-i 會把 response headers 一起印出來。這是把課本上的 HTTP 變成你真的看得到的最短路徑。
curl -i http://127.0.0.1:8000/
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 42
<h1>Hello</h1>
<p>Served by HTTP server.</p>
HTTP/1.1 200 OK 是 status line,代表這次請求成功。如果伺服器回傳 404,通常表示是哪一層出了問題?是網路、伺服器還是資源路徑?
為什麼 JSON API 的回應不能標成 text/html?
AJAX 底層仍然是 HTTP request / response;差別只在於請求是由頁面中的 JavaScript 主動發出,不一定要整頁重新整理。
例如送出表單後只更新部分內容、讀取 JSON API、即時搜尋建議、儀表板自動刷新等,都是 HTTP 在互動頁面中的延伸應用。