「什麼是 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 的開發者使用案例:
| 開發者 | 角色 | 需求 |
|---|---|---|
| Lisa | Web 開發者 | 在一家藝術銷售新創公司工作,需要簡單的方式讓藝術家上傳並展示作品照片 |
| 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 設計的各種典範。