API 設計 中階
GraphQL 與 REST API 的核心差異為何?何時應選擇 GraphQL?
GraphQL vs REST
REST 特性
- 資源導向,每個端點代表一個資源
- 固定回應結構,容易 over-fetching 或 under-fetching
- 多資源需多次請求(N+1 問題)
- 原生 HTTP 快取支援(GET 可快取)
GraphQL 特性
- Schema 導向,單一端點處理所有查詢
- 客戶端精確指定需要的欄位
- 一次請求組合多個資源
- 強型別 Schema,自帶 Introspection 文件
選擇時機
| 情境 | 建議 |
|---|---|
| 多種客戶端需不同資料形狀 | GraphQL |
| 資料關聯複雜、需深度 join | GraphQL |
| 公開第三方 API | REST |
| 簡單 CRUD 服務 | REST |
| 需要 CDN / HTTP 快取 | REST |
常見陷阱
- N+1 Query:需搭配 DataLoader 解決批次查詢
- 安全性:限制查詢深度與複雜度,防止惡意查詢
- 快取:POST 為主,需用 Persisted Queries 配合 CDN
面試加分:提及 GraphQL Federation(微服務場景)及 BFF(Backend for Frontend)模式。
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
