「什麼是 API?」當新手程式設計師提出這個問題時,通常會得到「應用程式介面(Application Programming Interface)」這樣的回答。但 API 的價值遠超過其名稱所暗示的——要真正理解並發揮 API 的價值,我們必須聚焦於 介面(Interface) 這個關鍵詞。

API 是軟體程式對外呈現的介面——面向其他程式、面向人類,而在 Web API 的情境下,更是面向整個網際網路。API 的設計反映了背後程式的許多面向:商業模式、產品功能,甚至偶爾的 bug。儘管 API 被設計用來與其他程式互動,但它們最終需要被撰寫這些程式的人類所理解和使用。

API 是現代網路商業平台實現互通性的基石:

應用領域說明
身分管理從企業電子郵件到協作設計工具,跨雲端服務的身分建立與維護都仰賴 API
資料共享氣象預報資料從權威來源(如美國國家氣象局)傳遞到各種天氣應用程式
支付處理信用卡付款透過 API 處理,讓企業無需煩惱金融科技的細節與法規

越來越多像 Amazon、Stripe、Google 和 Facebook 這樣的成功網路公司,都將 API 視為可擴展業務的關鍵元件。對於希望建立開放平台、擴大市場的企業而言,API 是不可或缺的拼圖。

為什麼我們需要 API#

API 的誕生源自於一個核心需求:與專業資料提供者交換資訊,讓其他公司不必重複解決相同的問題。舉例來說:

  • 想在網頁中嵌入互動地圖,而不必重新發明 Google Maps
  • 想讓使用者直接登入,而不必重建 Facebook Login
  • 想建立偶爾與使用者互動的聊天機器人,而不必打造即時通訊系統

在所有這些場景中,補充性的功能和產品都是利用專業平台的資料或互動能力來建構的。API 讓企業能夠快速開發獨特的產品——新創公司不需要重新造輪子,而是善用既有技術、接入其他生態系統,來打造差異化的產品。

我們的使用者是誰#

「如果你不是專注於為對的客戶打造對的東西,所有理論都毫無意義。」 — Bilal Aijazi,Polly 技術長

設計 API 時,以開發者為中心的思維至關重要。你需要清楚理解:

  • 你的開發者是誰
  • 他們的需求是什麼
  • 他們為什麼使用你的 API

注意: API 設計一旦發布就極難更改。在開始實作之前,務必充分定義並驗證你的 API 規格——對大多數開發者而言,從一個 API 設計遷移到另一個的成本極高。

以下是一個圖片上傳與儲存 API 的開發者使用案例:

開發者角色需求
LisaWeb 開發者在一家藝術銷售新創公司工作,需要簡單的方式讓藝術家上傳並展示作品照片
Ben後端企業開發者需要將費用系統產生的收據儲存到稽核與政策解決方案中
Jane前端開發者想在公司網站整合即時客服聊天功能

這些看似簡單的案例,各自隱藏著獨特的需求。若未能滿足開發者的實際需求,API 就不可能成功。

API 的商業案例#

API 在現代商業中扮演多種角色,不僅僅是直接獲利(訂閱費、使用費、利潤分成),還包括:

角色說明
支撐產品策略作為整體產品的關鍵元件
整合第三方服務連結外部服務與自家產品
激勵生態系建設鼓勵他人開發自家無暇或不願投資的補充產品
創造商機產生潛在客戶、建立新的產品分發通路

重點: API 必須與核心業務對齊。若產品主要收入來自廣告,提供替代客戶端的 API 可能會將流量從廣告體驗導走,反而損害營收——Twitter API 就是前車之鑑。

先內部、後外部#

有些公司先為內部開發者建構 API,再向外部開發者開放。

Slack 的案例: Slack 最初的 API 是為其 Web、桌面和行動客戶端顯示訊息介面而建。隨著公司成長,與重要商業軟體的「整合」成為 Slack 成長的關鍵。與其自行開發與其他公司的整合,Slack 選擇推出開發者平台,讓第三方開發者自行建構應用程式。

  • 優勢:API 在推出時已經過內部開發者充分測試
  • 劣勢:隨著時間推移,外部開發者的需求逐漸與內部開發者分歧。內部需要靈活地創造新體驗,外部則需要穩定性——API 向下相容性與產品演進之間的張力影響了開發速度

先外部、後內部#

有些公司優先服務外部開發者。GitHub 從一開始就是這種模式。

GitHub 的 API 最初服務想要程式化存取自身資料的外部開發者。很快地,圍繞 GitHub API 的小型企業開始形成,開發並銷售開發者工具。後來 GitHub 推出 GraphQL API 時,第三方開發者同樣是第一批使用者,之後才擴展到內部團隊。

  • 優勢:API 可以專注於服務外部開發者,無需同時顧及兩種受眾
  • 劣勢:GraphQL 的高度靈活性使得效能瓶頸分散在各種存取模式中,排查問題比單一 REST 端點更加困難

API 即產品#

對某些公司而言,API 就是產品本身。Stripe(支付處理)和 Twilio(SMS、語音、訊息通訊)就是典型案例。API 即產品是最直截了當的公司組織方式——整個業務都圍繞著為客戶打造無縫介面。

什麼造就了偉大的 API#

業界專家的答案歸結為一點:API 是否達成了它應該完成的目標

專家建議: 「好的 API 取決於你要解決的問題及其價值。你可能願意忍受一個設計混亂、文件不全的 API,只要它能提供獨特的資料集或複雜的功能。優秀的 API 通常具備:清晰性(目的、設計、上下文)、靈活性(適應不同使用場景)、完整性(解決方案的全面性)、可探索性(快速上手的能力)和文件品質。」 — Chris Messina,Uber 開發者體驗負責人

造就偉大 API 的關鍵面向:

  • 易用性、可擴展性與效能 — 涵蓋於本書第 2 至 4 章
  • 文件與開發者資源 — 涵蓋於第 7 至 9 章
  • 經得起時間考驗 — 變化既困難又無可避免,API 必須能應對不同速率的變遷

補充: 在大型企業環境中,變化速度較慢;在尚未找到產品市場適配的小型新創中,變化速度較快。但有時這些小型新創透過 API 提供了企業不可或缺的服務。

本章小結#

API 是現代科技產品的重要元件,企業可以透過多種方式將其融入商業模式。在下一章中,我們將概覽 API 設計的各種典範。