API Academy
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. Advanced API Technologies
  • 歡迎
  • 目錄
  • API 學院
    • Get Started
      • 什麼是 API?
      • API 如何運作?
      • 如何呼叫 API?
      • 如何閱讀 API 文件?
      • 章節總結
    • API Fundamentals
      • API 基礎知識:概覽
      • 方法與路徑
      • 參數
      • 請求 Body
      • 回應
      • API 規格與 OAS
      • 章節總結
    • Working with APIs
      • 使用 API:概覽
      • 根據規格發送請求
      • 環境與變數
      • 串聯多個端點
      • 處理 Auth
      • 處理 API 簽名
      • 腳本介紹
      • 章節總結
    • Mocking APIs
      • Mocking API:概覽
      • Smart Mock
      • Mock 預期結果
      • Cloud Mock
      • Mock 腳本
      • 章節總結
    • Designing APIs
      • 設計 API:概覽
      • API 設計介紹
      • 建立您的第一個 API 專案
      • 分析需求並規劃您的 API
      • 設計資料模型
      • 設計端點
      • 使用組件與可重用性
      • 設定與 Auth
      • API 設計指南
      • 章節總結
    • Developing APIs
      • 開發 API:概覽
      • 設定:安裝您的 AI 程式碼助手
      • 快速入門:30 分鐘內從規格到運行的 API
      • 了解生成的程式碼
      • 使用 Apidog 測試您的 API
      • 部署:將您的 API 上線
      • 章節總結
    • Testing APIs
      • 測試 API:概覽
      • 快速入門:您的第一個測試場景
      • 整合測試與資料傳遞
      • 動態值
      • 斷言與驗證
      • 流程控制:If, For, ForEach
      • 資料驅動測試
      • 性能測試
      • 測試報告與分析
      • CI/CD 整合
      • 排程任務與自動化
      • 進階測試策略
      • 章節總結
    • API Documentations
      • API 文件:概覽
      • 發布您的第一個 API 文件
      • 自訂文件外觀
      • 給消費者的互動功能
      • 進階發布設定
      • 管理 API 版本
      • 章節總結
    • Advanced API Technologies
      • 進階 API 技術:概覽
      • GraphQL
      • gRPC
      • WebSocket
      • Socket.IO
      • Server-Sent Events
      • SOAP
      • 章節總結
    • API Lifecycle
      • API 生命周期:概覽
      • API 生命周期的階段
      • API 治理
      • API 安全最佳實踐
      • 監控與分析
      • API 版本策略
      • API 的未來
      • 章節總結
    • API Security
      • API 安全性:概覽
      • API 安全性基礎知識
      • 身份驗證 vs. 授權
      • 了解 OAuth 2.0 和 OpenID Connect
      • JSON Web Tokens (JWT)
      • OWASP API 安全 Top 10
      • 加密與 HTTPS
      • 章節總結
    • API Tools
      • API 工具:概覽
      • API 工具的演變
      • API Clients
      • 命令列工具 (cURL, HTTPie)
      • API 設計和文件工具
      • API Mocking 工具
      • API 測試工具
      • 一體化 API 平台
      • 章節總結
    • API Gateway
      • API Gateway:概覽
      • 什麼是 API Gateway?
      • API Gateway 的關鍵功能
      • API Gateway vs 負載平衡器 vs 服務網格
      • 流行 API Gateway 解決方案
      • BFF (Backend for Frontend) 模式
      • 章節總結
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. Advanced API Technologies

GraphQL

GraphQL 是一種用於 API 的查詢語言,也是一個使用您現有資料來滿足這些查詢的執行環境。它由 Facebook 於 2012 年開發,並於 2015 年開源。
與 REST 不同,REST 為不同的資源暴露多個端點(例如 /users, /posts, /comments),GraphQL 通常暴露單一端點(通常是 /graphql)。客戶端發送一個描述它們確切需要的資料結構的查詢,伺服器返回符合該結構的 JSON 回應。

核心概念#

1.
Schema (SDL):客戶端和伺服器之間的契約。它定義了類型和關係。
2.
Query:唯讀的獲取操作(相當於 GET)。
3.
Mutation:寫入操作(相當於 POST/PUT/DELETE)。
4.
Subscription:用於即時更新的通用長效連線。
5.
Resolver:為 schema 中的每個欄位檢索實際資料的函式。

程式碼範例:Schema#

在 GraphQL 中,您使用 Schema Definition Language (SDL) 定義類型:

比較:GraphQL vs. REST#

功能RESTGraphQL
端點多個(基於資源)單一(通常是 /graphql)
資料獲取固定結構(過度獲取 Over-fetching / 獲取不足 Under-fetching)客戶端定義確切結構
版本控制v1, v2 URL 前綴透過棄用演進(schema 優先)
快取內建 HTTP 快取需要專門的設定(例如 Apollo)
效能較大的負載,簡單的處理較小的負載,複雜的伺服器處理

何時使用 GraphQL?#

1.
行動應用程式:透過僅獲取所需欄位來最小化頻寬。解決了串連多個 API 呼叫的「瀑布 (waterfall)」問題。
2.
微服務聚合:GraphQL「Gateway」可以將來自多個後端微服務的資料縫合到一個統一的前端 API 中。
3.
快速迭代:前端團隊可以修改查詢以獲取新資料,而無需等待後端團隊建立新端點。

在 Apidog 中除錯 GraphQL#

Apidog 提供一流的 GraphQL 客戶端體驗,包括 schema 內省 (introspection) 和文件生成。

1. 建立請求#

1.
建立一個新端點。
2.
將方法設定為 POST。
3.
在 Body 分頁中,選擇 GraphQL。

2. 智慧查詢編輯#

利用 Apidog 的內省功能:
獲取 Schema:點擊 Fetch Schema 從伺服器下載類型定義。
自動完成:在編輯器中輸入以查看可用的欄位、類型和參數。
驗證:針對 schema 進行即時錯誤檢查。

3. 使用變數#

Apidog 支援使用 Query Variables 將查詢邏輯與資料值分開。
查詢:
變數 (JSON):
{
  "id": "123"
}
查看詳情 GraphQL

關鍵收穫#

單一端點:GraphQL 使用單一 URL(例如 /graphql)進行所有資料互動。
客戶端規格:客戶端確切定義它們需要什麼資料,防止過度獲取和獲取不足。
強型別:Schema Definition Language (SDL) 確保了客戶端和伺服器之間的嚴格契約。
內省:Apidog 可以「讀取」您的 GraphQL schema 以自動提供自動完成和文件。
繼續閱讀 → gRPC
Modified at 2025-12-29 09:35:19
Previous
進階 API 技術:概覽
Next
gRPC
Built with