應用程序編程接口 (API) 是一組規則,使軟件程序能夠將數據傳輸到另一個軟件程序。API 使開發人員能夠避免冗余工作;與構建和重建已經存在的應用程序功能不同,開發人員可以通過按照 API 要求格式化請求,將現有功能整合到他們的新應用程序中。
API 是一種“接口”,意思是一種事物與另一種事物進行交互的方式。作為一個真實的例子,A??TM 有一個界面——一個屏幕和幾個按鈕——允許客戶與他們的銀行互動并請求服務,比如取錢。同樣,API 是一個軟件如何與另一個程序交互以獲得所需服務的方式。
想象一下,詹妮弗建立了一個網站,幫助通勤者在上班前檢查公路交通。Jennifer 可能會花費大量時間和金錢來建立一個復雜的高速公路跟蹤系統,以將這些信息提供給她網站的用戶。但是這些能力已經存在,因為外部各方已經創建了這樣的系統。Jennifer 的網站沒有以這種方式重新發明輪子,而是使用由外部高速公路跟蹤服務提供的 API?,F在 Jennifer 可以專注于構建網站的其他方面。
什么是 API 調用?
API 調用,也稱為 API 請求,是指向觸發 API 使用的 API 的消息。回顧該示例,Jennifer 構建她的網站時,它會在加載時自動生成對高速公路跟蹤服務的 API 調用。響應從該服務返回到網站,并使其能夠顯示最新的高速公路交通信息。
API 調用必須按照 API 的要求進行格式化才能工作。API 的要求稱為其“架構”。該模式還描述了提供給每個請求的響應類型。
假設一位通勤者使用 Jennifer 的網站檢查 192 號高速公路上的交通情況。該網站發送一個 API 調用來提供此信息 — 一條消息,內容為“192 號高速公路”。高速公路跟蹤服務的 API 服務器收到此消息并回復 192 號高速公路上的行駛時間。想象一下 API 的架構是這樣的:
接口請求 | API 響應 |
---|---|
《192號公路》 | 192 號公路行駛時間 |
《217號公路》 | 217 號公路行駛時間 |
《225號公路》 | 225 號公路行駛時間 |
(請注意,這是一個高度簡化的示例——現實世界的 API 請求、響應和模式更為復雜。)
現在假設 Jennifer 的網站向“Highway ASDFGHJ”發送 API 請求。這不是一個有效的請求,因為它不符合 API 的模式,它只允許高速公路的實際名稱。服務器將無法對此類請求提供可用的響應。
什么是 API 端點?
端點是通信通道的末端。每個通信渠道都至少有兩個端點,就像現實生活中的對話至少包括兩個人一樣。API 端點是 API 調用或響應源自的地方。
在示例中,API 連接的一個端點是 Jennifer 的網站,另一個是托管 API 的服務器。Jennifer 的 API 調用必須轉到API 服務器負責的某個 URL(URL 是一個網址)才能獲得響應。
什么是 API 集成?
API 集成是使用 API 的兩個或多個應用程序的組合。API 集成使一個應用程序能夠從另一個應用程序的功能中受益,就像將銷售團隊和營銷團隊結合在一個辦公室中可以使這兩個團隊一起工作并從彼此的努力中受益一樣。API 集成也常用于在兩個應用程序或數據庫之間同步數據。
什么是 Web API?
任何涉及計算機代碼的東西都可以有一個 API,從操作系統到軟件庫。Web API 專門供通過 Internet 訪問的 Web 應用程序使用。
Web API 對于現代互聯網來說非常重要。幾乎所有面向用戶的應用程序都依賴 API 來運行(不僅僅是 Jennifer 的網站?。?。整個軟件開發理念都依賴于 API 的使用——其中一種理念是JAMstack,JAM 代表 JavaScript、API、標記。另一個例子是微服務架構,它使用 API 來調用構成應用程序的不同功能。即使沒有這些方法構建的應用程序通常也依賴于 API。
什么是 SOAP API 和 REST API?
SOAP API 和 REST API 描述了不同類別的 API。
SOAP(簡單對象訪問協議)是一種協議。SOAP API 是僅使用 SOAP 協議的 API。
REST(REpresentational State Transfer)是一種 Web 服務的架構風格。REST API 是使用 REST 架構構建的任何 API。與 SOAP API 不同,REST API 可用于任何協議。今天的大多數 API 都是 REST API。
API 是否會帶來安全風險?
正如允許一個人使用應用程序會帶來該人濫用該應用程序的風險一樣,API 也會帶來 API 客戶端濫用該服務的風險。此外,Web API 調用通過 Internet 傳輸,并且可以像通過網絡傳輸的任何其他數據一樣被攔截、欺騙或修改。
API 安全是保護 API 免受攻擊和濫用的做法。鑒于 API 對現代 Internet 的重要性,API 安全性是Web 應用程序安全性的核心組件。關鍵的 API 安全措施包括:
- 速率限制:發出過多 API 請求的客戶端可能會減慢或崩潰其他客戶端的 API。速率限制對在特定時間范圍內來自給定 API 端點的 API 請求數量設置了上限。
- DDoS 保護:類似于速率限制,分布式拒絕服務 (DDoS) 保護可阻止DDoS 攻擊,其目的是用一次性發送的大量請求耗盡或淹沒 API。
- 身份驗證:對 API 端點進行身份驗證很重要,以確保 API 請求來自合法來源而不是來自攻擊者。相互 TLS (mTLS) 是最有效的 API 身份驗證形式之一。
- 模式驗證:如果 API 請求不符合 API 的模式,API 可能會以意想不到的方式做出反應——例如,通過泄露機密數據。架構驗證使 API 能夠刪除此類請求。