Rick's DevNotes
筆記關於我作品集
筆記類別
  • 全部
  • DockerDocker
  • NetworkNetwork
  • RxJSRxJS
  • NginxNginx
  • TypeScriptTypeScript
  • Data_Structure_And_AlgorithmData Structure And Algorithm
  • JavaScriptJavaScript
  • PostgreSQLPostgreSQL
  • ReactReact
  • GitGit

© 2026 Rick's DevNotes. All rights reserved.

# SDK# Web APIs

更新時間:2025/08/05

建立時間:2020/03/31

了解 Web Service API 應用

初步理解 API

在網路世界中,我們經常聽到 API (Application Programming Interface, 應用程式介面)。若要用一句話簡單說明,它就是:軟體與軟體之間的互動橋樑。透過 API,開發者可以將特定功能快速整合到自己的程式中,就像想要海釣時可以直接租借釣具,而不用自己製作釣竿。

值得注意的是,Web Service API 是 API 的一種;但在其他領域中,API 並不一定就是 Web Service API。

在前後端網頁開發中,提到 API,大多指的就是 Web Service API。它透過 URL 與遠端伺服器溝通,進行服務請求與資料交換。依據協定與資料格式的不同,Web Service API 可以分為:

  1. SOAP (Simple Object Access Protocol):使用專有 XML 格式,頻寬需求較高,常見於對資安要求嚴格的場合。
  2. REST (Representational State Transfer):支援多種資料格式(如 JSON、XML),是目前最普及的形式。
  3. XML-RPC:早期技術,使用特定 XML 格式,頻寬需求較低。
  4. JSON-RPC:與 XML-RPC 類似,但資料格式改用 JSON。

REST (表現層狀態轉換)

在上述類型中,最常見的是 REST API。需要注意的是,REST 並不是一種協定,而是一種 Architectural Style (建構風格)。設計 REST API 時,需要遵循以下限制 (REST Constraints):

REST Constraints

  1. Uniform Interface:以統一的 URL 對應資源,提供一致的對接方式。
  2. Client/Server Separation:客戶端與伺服器端分離,伺服器端更新不會影響客戶端運作。
  3. Stateless:無狀態。每次請求必須攜帶完整資訊,伺服器不會記錄先前的互動。
  4. Cacheable:回應可被快取,以提升效能。
  5. Layered System:允許分層架構,方便延展與管理。

有狀態與無狀態的比喻

  • 有狀態 (Stateful): Server 會記住你之前的登入資訊。比如你第一次登入後,Server 把你的狀態記下來,下次你再登入時,Server 已經知道你是誰,處理起來會更快,這就叫有狀態。

就像你去經常光顧的早餐店,老闆認得你,還知道你習慣吃的早餐是什麼,不用再口頭告知一次。

  • 無狀態 (Stateless): Server 不會記住你之前的資料。每次你要登入,都必須把所有需要的資訊重新提供給 Server,Server 才能處理,這叫無狀態。

就像你每次進酒吧,老闆都要你出示證明,確認沒問題才讓你進去——這就是無狀態。

stateful-illustration

HTTP 與 RESTful API

所謂 RESTful API,就是依照 REST 規則設計的 API。學習 RESTful API 前,通常會先介紹 HTTP,因為 RESTful API 就是利用 HTTP 這個網路傳輸協定來運作。網路世界主要分成「客戶端(Client)」和「伺服器端(Server)」。HTTP(超文本傳輸協定)規定了這兩者如何互相溝通。它有多種常見的請求方式,例如 GET、POST、PUT、PATCH、DELETE 等。

舉個例子:當你打開 FACEBOOK 首頁時,其實就是向伺服器發出一個「請求」(Request)。伺服器會先檢查網址是否存在,存在就把頁面資料回傳給你(Response);如果找不到,則會回傳像是 HTTP Status Code 404 這樣的錯誤訊息。同樣地,RESTful API 會把每個 URL 設計成對應一種操作。只要有 REST API 的網址(URL),就能用 HTTP 請求來做 GET(取得資料)、POST(新增資料)、PUT(更新資料)、DELETE(刪除資料)等動作。下面就是一些常見的 URL 範例:

依照 REST 風格設計的 API 稱為 RESTful API。由於它充分運用 HTTP (Hypertext Transfer Protocol),因此理解 HTTP 對於學習 RESTful API 至關重要。

HTTP 定義了 Client 與 Server 的互動方式,包含多種常見請求方法:

  • GET:讀取資料
  • POST:新增資料
  • PUT / PATCH:更新資料
  • DELETE:刪除資料

舉例來說:

  • /GET /items → 獲取商品列表
  • /GET /items/1 → 獲取商品資料
  • /POST /items → 新增商品
  • /PATCH /items/1 → 更新商品
  • /DELETE /items/1 → 刪除商品

這種設計方式,讓每個 URL 都能清楚對應一項操作。


SDK 與 API 的差異

除了 API 之外,開發過程中我們也常聽到 SDK (Software Development Kit)。兩者的差異如下:

項目APISDK
定義軟體與軟體之間的介面協助開發的工具集合
內容僅提供功能介面與呼叫方式包含 API、文件、範例程式碼、工具等
功能提供特定功能的呼叫方式提供完整開發環境與資源
舉例Google Maps API → 提供地圖定位功能Android SDK → 包含 API、模擬器、除錯工具等

簡單比喻

  • API:像是一張菜單,你可以透過它點餐(呼叫功能)。
  • SDK:就像一個廚房,不僅有菜單,還有食材與工具,讓你能自己做菜(開發完整應用)。

參考資料

  • rapidapi Blog
  • w3.org
  • PROGRESSBAR
  • itsems blog
  • Wikipedia