提供 JSON(蓋一個 API)
讓你的 server 講網路的語言
⏱ 預估 ~7 分鐘
01 · 讀一讀
目前為止,你的 routes 用 res.send() 回純文字。簡單訊息可以,但真實 API 不回純文字 — 它們回 JSON。
還記得 Level 5 的 JSON 嗎?它是網路上通用的資料格式。當你的手機查天氣、網站載入你的個人檔、app 抓新貼文 — 那些資料全都用 JSON 傳。
Express 讓這變超簡單。不用 res.send(),你用 res.json() 並傳一個 JavaScript 物件。Express 自動把它轉成 JSON、加上正確的 header,讓瀏覽器跟 app 知道怎麼讀。
重點整理
- res.send() 回純文字
- res.json() 回 JSON 資料 — API 的標準
- Express 自動處理 JavaScript 物件到 JSON 的轉換
- 這是你用過的每個 API 幕後的運作方式
02 · 真機練習
在你的 app.js 加一個新的 JSON route。這個 route 會回傳目前時間跟日期作為結構化資料。跟你其他 routes 放一起(在 app.listen() 前面)。
app.get('/api/time', (req, res) => {
res.json({
time: new Date().toLocaleTimeString(),
date: new Date().toLocaleDateString()
});
});03 · 選擇題
res.send() 跟 res.json() 差在哪?
- res.send() 比 res.json() 快
- res.json() 只能用陣列
- 沒差別
- res.send() 回純文字、res.json() 回結構化的 JSON 資料
04 · 真機練習
用 Ctrl+C 停掉 server 然後重啟,再用瀏覽器拜訪新 route。 你應該會看到 JSON 資料,有目前時間跟日期 — 不是純文字,是有大括號跟 key-value 對的結構化資料。
node app.js
http://localhost:3000/api/time
05 · 填空
要在 Express 回 JSON 資料,用 res._____() 而不是 res.send()。
06 · 讀一讀
你的 server 現在會講 JSON 了 — 跟網路上每個 API 同一個語言。
重新整理頁面幾次。注意到時間每次請求都不一樣?那是因為你的 server 每次有人連到 URL 時都重跑程式碼。它是動態的 — 它根據當下的時刻產生回應。
這就是靜態網站(每次內容都一樣)跟 API(內容會依資料、時間、使用者、或任何東西改變)的差別。
還記得 Level 5 學的 API 跟 JSON 嗎?你現在在那段對話的另一邊。你不只是在用 API — 你在做 API。
07 · 選擇題
為什麼 /api/time endpoint 每次你重新整理都回不同時間?
- Server 在每個請求都重跑一次 new Date(),所以永遠回當下時間
- 瀏覽器在快取不同版本的頁面
- Express 給每個回應產生隨機時間戳
- JSON 格式會自動更新時間戳
⚠ 完整互動體驗需要 JavaScript。請啟用 JavaScript 後重新整理。
※ 本站為獨立繁中教學專案,非 Anthropic 官方產品。Claude™ 為 Anthropic, PBC 商標。