什麼是 API?

應用程式程式設計介面 (API) 是一個軟體使用另一個軟體功能的方式。

學習目標

閱讀本文後,您將能夠:

  • 定義「API」
  • 說明 API 呼叫、API 端點、API 結構描述和 API 整合
  • 描述 Web API、SOAP API 和 REST API
  • 瞭解 API 安全性保護

複製文章連結

什麼是應用程式程式設計介面 (API)?

An application programming interface (API) is a set of rules that enables a software program to transmit data to another software program.

APIs enable developers to avoid redundant work; instead of building and rebuilding application functions that already exist, developers can incorporate existing ones into their new applications by formatting requests as the API requires.

API 是一個「介面」,意味著一個事物與另一個事物互動的一種方式。舉一個現實世界中的例子,ATM 有一個介面——一個螢幕和幾個按鈕,允許客戶與他們的銀行互動並請求服務,例如取出現金。同樣,API 是一個軟體與另一個程式互動以獲得所需服務的方式。

想像一下,Jennifer 建立了一個網站,幫助通勤者在上班前檢查高速公路的交通情況。Jennifer 可能會花費大量時間和金錢來建立一個複雜的高速公路追蹤系統,以便向她的網站使用者提供這些資訊。但是這些功能已經存在,因為外部各方已經建立了這樣的系統。Jennifer 的網站沒有重新建立這樣的系統,而是使用由外部高速公路追蹤服務提供的 API。現在 Jennifer 可以專注於構建網站的其他方面。

什麼是 API 呼叫?

An API call, also known as an API request, is a message directed at an API that triggers the API's use.

Referring back to the example, Jennifer constructs her website in such a way that when it loads, it automatically generates an API call to the highway tracking service. The response comes back to the website from that service and enables it to display the latest highway traffic information.

API 呼叫必須按照 API 的要求進行格式化才能正常運作。API 的要求稱為其「結構描述」。該結構描述還描述了為每個要求提供的回應類型。

假設一個通勤者使用 Jennifer 的網站查看 192 號高速公路的交通情況。該網站傳送一個 API 呼叫來提供此資訊,即一條寫著「192 號高速公路」的訊息。高速公路追蹤服務的 API 伺服器接收到此訊息並回覆 192 號高速公路的行駛時間。想像一下這個 API 的結構描述:

API 要求 API 回應
「192 號高速公路」 192 號高速公路上的旅行時間
「217 號高速公路」 217 號高速公路上的旅行時間
「225 號高速公路」 225 號高速公路上的旅行時間

(請注意,這是一個高度簡化的範例——實際上的 API 要求、回應和結構描述更為複雜。)

現在假設 Jennifer 的網站傳送「高速公路 ASDFGHJ」的 API 要求。這不是一個有效的要求,因為它不符合 API 的結構描述,該結構描述只允許高速公路的實際名稱。伺服器將無法為此類要求提供可用的回應。

API 端點是什麼?

端點是一個通訊信道的終點。API 端點是 API 回應的發源地。

在範例中,API 連線的用戶端是 Jennifer 的網站,端點是託管 API 的伺服器。Jennifer 的 API 呼叫必須前往 API 伺服器負責的某個 URL(URL 是一個網址,如 www.cloudflare.com/learning)才能獲得回應。

什麼是 API 整合?

API 整合是兩個或多個使用 API 的應用程式的組合。API 整合使一個應用程式能夠從另一個應用程式的功能中受益,就像將銷售團隊和行銷團隊合併到一個辦公室使這兩個團隊能夠一起工作並從彼此的努力中受益一樣。API 整合也常用於在兩個應用程式或資料庫之間同步資料。

什麼是 Web API?

從作業系統到軟體庫,任何涉及電腦代碼的東西都可以有一個 API。Web API 專門供透過網際網路存取的 Web 應用程式使用。

Web API 對於現代網際網路來說非常重要。幾乎所有面向使用者的應用程式都依賴 API 來運作(不僅僅是 Jennifer 的網站!)。整個軟體開發理念都依賴於 API 的使用——其中一種理念是 JAMstack,JAM 代表 JavaScript、API、markup。另一個範例是微服務架構,它使用 API 來呼叫構成應用程式的不同功能。即使沒有使用這些方法構建的應用程式通常也依賴於 API。

什麼是 SOAP API 和 REST API?

SOAP API 和 REST API 是不同類別的 API。

SOAP(簡易物件存取通訊協定)是一種通訊協定。SOAP API 是只使用 SOAP 通訊協定的 API。

REST(具象狀態傳輸)是一種 Web 服務的架構樣式。REST API 是使用 REST 架構構建的任何 API。與 SOAP API 不同,REST API 可以使用任何通訊協定。如今的大多數 API 都是 REST API。

API 是否會引入安全風險?

正如允許一個人使用應用程式會帶來該人濫用應用程式的風險一樣,API 也會帶來 API 用戶端濫用服務的風險。此外,Web API 呼叫透過網際網路傳輸,也可能像透過網路傳輸任何其他資料一樣被攔截、偽造或修改。

API 安全性是保護 API 免受攻擊和濫用的做法。鑑於 API 對現代網際網路的重要性,API 安全性是 Web 應用程式安全性的核心組成部分。關鍵的 API 安全措施包括:

  • 限速:發出過多 API 要求的用戶端可能會減慢或使其他用戶端的 API 崩潰。限速限制了在特定時間範圍內可以來自給定 API 端點的 API 要求數量。
  • DDoS 防護:與限速類似,分散式阻斷服務 (DDoS) 防護可以阻止 DDoS 攻擊,此類攻擊的目的是用一次發送的大量要求耗盡或淹沒一個 API。
  • 驗證:對 API 端點和用戶端進行驗證,以確保 API 要求來自合法來源而不是來自攻擊者,這非常重要。Mutual TLS (mTLS) 是最有效的 API 驗證形式之一。
  • 結構描述驗證:如果 API 要求不符合 API 的架構,API 可能會以意想不到的方式做出反應,導致洩露機密資料。結構描述驗證使 API 能夠丟棄此類要求。

Cloudflare API Gateway includes these and other security features to protect against API threats. To read about API security in more depth, see What is API security?