Vibe Coder
API 串接實戰:看懂文件、Postman 測試、requests 補強
API 串接的關鍵順序是先讀懂文件、用 Postman 測通,再讓 AI 把測試結果轉成程式碼。AI 生的串接程式常常只處理成功的情況,timeout、錯誤處理、分頁、Rate Limit 都要你主動要求補上。
API 串接實戰:看懂文件、Postman 測試、requests 補強
API 文件是 AI 的原始資料,你把正確的文件資訊給 AI,它就能生出正確的串接程式;給錯了,生出來的也是錯的。這一課教你三個步驟:先看懂文件的五個區塊,再用 Postman 測通,最後讓 AI 把測試結果補強成完整、有錯誤處理的 Python 程式。
學會複用這套流程之後,換一個 API 也只是換 URL 和參數,不用每次都從零開始問 AI。
你將學到什麼
看懂 API 文件
必讀的五個區塊,把文件貼給 AI 比只說一句話精確十倍。
用 Postman 先測試
確認 API 本身打得通,再讓 AI 把結果轉成程式碼。
requests 完整用法
帶著 timeout、錯誤處理的完整 Python 串接範例。
處理成功、失敗、分頁
AI 生的程式最常漏掉的四個地方,追問 AI 一次補齊。
看懂 API 文件:必讀的五個區塊
| 區塊 | 看什麼 | 重要性 |
|---|---|---|
| Authentication | API Key 怎麼申請、放在哪裡,Header 還是 URL 參數 | 高 |
| Endpoint | API 的完整 URL,注意 base URL 和路徑要拼在一起 | 高 |
| Parameters | 必填和選填的參數,名稱和型別要對 | 高 |
| Request Body | POST、PUT 要傳什麼 JSON 結構 | 中 |
| Response Schema | 成功時回傳什麼結構,失敗時回傳什麼 | 中 |
把文件貼給 AI 最有效找到 API 的文件頁面,複製相關段落,告訴 AI:這是某個 API 的文件,請幫我寫 Python 程式串接它,取得我要的資料。這比只說幫我串接某個 API 精確十倍。
用 Postman 先測試,再讓 AI 寫程式
Postman 是一個 API 測試工具,讓你在寫程式之前先確認 API 可以打通。
- 下載並開啟 Postman,建立新的 Request。
- 選擇方法,GET 或 POST,輸入 API 的完整 URL。
- 在 Headers 頁籤加入 Authorization 和 Content-Type。
- 如果是 POST,在 Body 選 raw、JSON,填入要傳的資料。
- 點 Send,確認狀態碼是 200,且 Response 格式符合預期。
- 測試成功後,點 Code 再選 Python Requests,Postman 會自動生成 Python 程式碼。
Postman 測試成功後的標準流程把 Postman 生成的程式碼貼給 AI,說:這是 Postman 生成的 API 呼叫程式碼,請幫我加上從 .env 讀取 API Key、加上錯誤處理、解析 response 取出需要的欄位、加上繁體中文註解。
requests 完整用法
import requests, os
from dotenv import load_dotenv
load_dotenv()
headers = {
"Authorization": f"Bearer {os.getenv('API_KEY')}",
"Content-Type": "application/json",
}
payload = {"query": "weather taipei", "lang": "zh"}
try:
r = requests.post("https://api.example.com/search",
headers=headers, json=payload, timeout=10)
r.raise_for_status() # 4xx or 5xx 自動拋出 exception
data = r.json()
except requests.exceptions.Timeout:
print("request timed out")
except requests.exceptions.HTTPError as e:
print(f"http error: {e.response.status_code}")
處理 API 回傳:成功、失敗、分頁
拿到 Response 之後,先判斷狀態碼再安全取值,不要假設欄位一定存在。
if r.status_code == 200:
data = r.json()
items = data.get("items", []) # 安全取值,沒有給空 list
total = data.get("total", 0)
print(f"total {total}, got {len(items)}")
else:
error = r.json().get("error", "unknown error")
print(f"error {r.status_code}: {error}")
資料量大的 API 通常會分頁,要全部取完得用迴圈,直到回傳結果顯示沒有下一頁為止。
all_items = []
page = 1
while True:
r = requests.get(url, params={"page": page, "per_page": 100}, headers=headers)
data = r.json()
all_items.extend(data.get("items", []))
if not data.get("has_next", False):
break
page += 1
AI 串接 API 的四個常見問題
| 問題 | 症狀 | 追問 AI |
|---|---|---|
| 沒有 timeout | API 沒回應就一直等 | 請加上 timeout 等於 10 秒的參數 |
| 沒有 raise_for_status | 4xx、5xx 不會拋出錯誤,繼續執行 | 請在 requests 後加上 raise_for_status |
| 沒有處理 Rate Limit | 收到 429 後直接當機 | 請加上 429 時等待 60 秒再重試的邏輯 |
| Key 寫死在程式裡 | 上傳 GitHub 就洩漏 | 請改從環境變數讀取 API Key |
API Key 放錯位置是常見特例不是所有 API 都把 Key 放在 Header,有些會要求放在網址的查詢參數裡。這種細節只有讀文件才會發現,套用一般模板反而會出錯,串接前務必確認清楚。
延伸學習
常見問答
為什麼要先用 Postman 測試,不能直接叫 AI 寫程式嗎?
先用 Postman 確認 API 本身可以打通,出錯時才能判斷問題在 API 設定還是在程式碼,不會浪費時間在猜測上。
API 文件要怎麼給 AI 才最有效?
找到文件頁面複製相關段落,直接告訴 AI 這是哪個 API 的文件,要它幫你串接取得什麼資料,比只說一句需求精確很多。
AI 生的串接程式最常漏掉什麼?
最常見的四個問題是沒有設定 timeout、沒有呼叫 raise_for_status、沒有處理 Rate Limit 429、以及把 API Key 寫死在程式裡。
API 回傳資料很多筆要怎麼一次全部拿到?
用分頁參數搭配迴圈,每次取一批資料加進總清單,直到回傳結果顯示沒有下一頁為止。
