Vibe Coder
HTTP 是什麼?Vibe Coder 一定要懂的網路基礎
HTTP 是什麼?Vibe Coder 一定要懂的網路基礎
每次你打開網頁、呼叫一支 API,背後都是 HTTP 在傳遞資料。不管是 OpenAI、Google、Stripe,還是你自己寫的後端,全部都用同一套規則溝通。這一課把 HTTP 拆開來看,讓你不只會用 AI 生程式,出錯的時候也看得懂發生了什麼事。
學會這一課之後,你會發現以前看不懂的錯誤訊息,例如 401、404、CORS 被擋,其實都有固定的排查順序,不用每次都靠猜的。
你將學到什麼
HTTP 是什麼
一次對話分成請求與回應兩部分,搞懂這個架構就懂了所有 API。
六個常用方法
GET、POST、PUT、PATCH、DELETE 各自的用途與適用場景。
狀態碼全覽
2xx 到 5xx 代表什麼問題,看到數字就知道下一步怎麼做。
Header 與 CORS
請求附帶的說明書,以及本機能跑、上線卻被擋的真正原因。
HTTP 是什麼:一次對話,兩個部分
HTTP(HyperText Transfer Protocol)是瀏覽器和伺服器之間溝通的規則。一次 HTTP 對話分成兩個部分:Request(請求)是你或你的程式發送出去的,說「我要什麼」;Response(回應)是伺服器回傳的,說「這是你要的」或「你的請求有問題」。
六個常用方法
HTTP 方法告訴伺服器「你想對這個資源做什麼事」。AI 生的程式裡 GET 和 POST 最常出現,但每個方法都有明確的語意,用錯了 API 會直接拒絕。
| 方法 | 用途 | 有沒有 body | 常見場景 |
|---|---|---|---|
| GET | 取得資料 | 沒有 | 查詢天氣、取得使用者清單、搜尋 |
| POST | 新增資料 | 有 | 送出表單、新增使用者、上傳檔案 |
| PUT | 完整更新資料 | 有 | 更新整筆使用者資料 |
| PATCH | 部分更新資料 | 有 | 只更新使用者的 email 欄位 |
| DELETE | 刪除資料 | 通常沒有 | 刪除一筆記錄 |
| OPTIONS | 查詢支援的方法 | 沒有 | CORS 預檢請求,瀏覽器自動發送 |
import requests
# GET:取得資料,參數放 URL
r = requests.get("https://api.example.com/users", params={"page": 1})
# POST:新增資料,資料放 body
r = requests.post("https://api.example.com/users",
json={"name": "Joan", "email": "j@x.com"})
# DELETE:刪除資料
r = requests.delete("https://api.example.com/users/42")
狀態碼全覽:不同範圍代表不同問題
狀態碼是伺服器告訴你「這次請求的結果」的數字代碼。看狀態碼是排錯的第一步,不同範圍代表不同類型的問題。
| 範圍 | 意思 | 你要做什麼 |
|---|---|---|
| 2xx | 成功 | 繼續處理回傳的資料 |
| 3xx | 重導向 | requests 通常自動處理,不用管 |
| 4xx | 你的請求有問題 | 確認 URL、參數、認證是否正確 |
| 5xx | 伺服器有問題 | 等一下再試,或聯絡 API 提供者 |
| 狀態碼 | 意思 | 常見原因 | 解法 |
|---|---|---|---|
| 200 OK | 成功 | 正常回應 | 繼續取值 |
| 201 Created | 新增成功 | POST 成功後常見 | Body 裡通常有新建立的資源 |
| 400 Bad Request | 請求格式錯 | 參數名稱錯、缺必要欄位、格式不符 | 對照 API 文件確認參數 |
| 401 Unauthorized | 未認證 | API Key 沒傳、格式錯、已過期 | 確認 Authorization Header 格式 |
| 403 Forbidden | 沒有權限 | 帳號方案不包含此功能 | 確認帳號有此 API 的存取權 |
| 404 Not Found | 找不到 | URL 打錯、資源不存在 | 確認 URL 路徑 |
| 422 Unprocessable | 資料驗證失敗 | 欄位格式不對,如 email 格式錯 | 看 Response body 的錯誤說明 |
| 429 Too Many Requests | 超過頻率限制 | 免費方案呼叫太頻繁 | 加延遲或升級方案 |
| 500 Internal Server Error | 伺服器炸了 | 對方 API 有 bug | 等一下再試,查狀態頁 |
Header:請求附帶的說明書
Header 是 HTTP 請求或回應附帶的元資料,告訴對方這個請求的身份、格式、認證資訊等等。AI 生的程式裡,Header 設定是最常出問題的地方。
| 常用 Header | 方向 | 用途 | 範例值 |
|---|---|---|---|
| Content-Type | 請求 | 你傳的資料是什麼格式 | application/json |
| Authorization | 請求 | 你是誰,也就是認證資訊 | Bearer sk-abc123 |
| Accept | 請求 | 你希望收到什麼格式 | application/json |
| User-Agent | 請求 | 你用什麼客戶端 | MyApp/1.0 |
| Access-Control-Allow-Origin | 回應 | 允許哪些網域存取,也就是 CORS | 特定網域或萬用字元 |
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
}
r = requests.post(url, headers=headers, json=data)
Authorization: Bearer 你的token;Basic Auth 是 Authorization: Basic base64(username:password) ,也有些 API 用自訂 Header,例如 X-API-Key: 你的key。看文件確認格式,格式錯了一定會得到 401。CORS:為什麼本機可以、上線就被擋
CORS(Cross-Origin Resource Sharing)是瀏覽器的安全機制,防止惡意網站偷偷存取其他網站的 API。只有在瀏覽器端的前端 JS 才會遇到,用 Python 直接呼叫 API 不受影響。
本機開發時,前端和後端通常都在 localhost,或者你直接用 Python 腳本呼叫 API,不經過瀏覽器的跨域限制。部署後前端在你的網站網域,後端在另一個 API 網域,兩個不同的來源,瀏覽器就開始擋了。
Access to fetch at 'https://api.example.com/data'
from origin 'https://yoursite.com' has been blocked
by CORS policy: No 'Access-Control-Allow-Origin' header
is present on the requested resource.
解法是在後端加上 CORS Header,用 FastAPI 的話最常見的做法如下。
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["https://yoursite.com"],
allow_methods=["*"],
allow_headers=["*"],
)
完整 HTTP 請求解剖
把一次完整的 API 呼叫拆開來看,理解每一個部分的作用。
POST /api/v1/messages HTTP/1.1
Host: api.anthropic.com
Authorization: Bearer sk-ant-abc123
Content-Type: application/json
Accept: application/json
{
"model": "claude-sonnet-4-5",
"messages": [{"role": "user", "content": "Hello"}]
}
| 部分 | 說明 |
|---|---|
| Request Line | 方法加路徑加協議版本,例如 POST /api/v1/messages HTTP/1.1 |
| Host | 目標伺服器的網域 |
| Authorization | 身份驗證資訊,格式要符合 API 要求 |
| Content-Type | 告訴伺服器 body 的格式是 JSON |
| 空行後的 JSON | Request Body,只有 POST、PUT、PATCH 才有 |
Vibe Coder 的 HTTP 排錯 SOP
- 先看狀態碼:2xx 是成功,4xx 是你的問題要改請求,5xx 是對方的問題,等一下或換方案。
- 再看 Response Body:4xx 錯誤通常帶有錯誤說明,複製給 AI 一起分析。
- 確認 Header 格式:收到 401 先確認 Authorization Header 格式是否符合文件。
- CORS 錯誤一律回後端解決:前端的 CORS 錯誤要去後端加 CORS middleware,不是前端能自己解決的。
延伸學習
ChatGPT 很強,但真正讓你下班的是 Google
六小時完整實錄。從「AI 很厲害,為什麼你還是每天加班」這個問題出發,把 Google Workspace 當成真正的工作平台重新設計一次流程 ── Sheets 的資料結構、Drive 與 Docs 的文件流、Gmail 與 Calendar 的通知系統,再用 Apps Script 讓它自己跑起來,最後收斂成一張屬於你自己的 AI 工作能力地圖。
NT$ 4,599
寫給升國一的你的筆記術
寫給剛升上國中的你:筆記不是寫給老師看的,是寫給考前的自己看的。18 章 85 課圖文,從「為什麼要寫」講到七科各自怎麼記,附 78 份可以印出來寫的練習單,以及 80 課家長專區與 34 張三年筆記養成路徑圖。沒有閱讀期限,國一買、國三還在。
NT$ 3,599

