應(yīng)用程序編程接口 (API) 是一組規(guī)則,使軟件程序能夠?qū)?shù)據(jù)傳輸?shù)搅硪粋€軟件程序。API 使開發(fā)人員能夠避免冗余工作;與構(gòu)建和重建已經(jīng)存在的應(yīng)用程序功能不同,開發(fā)人員可以通過按照 API 要求格式化請求,將現(xiàn)有功能整合到他們的新應(yīng)用程序中。
API 是一種“接口”,意思是一種事物與另一種事物進行交互的方式。作為一個真實的例子,A??TM 有一個界面——一個屏幕和幾個按鈕——允許客戶與他們的銀行互動并請求服務(wù),比如取錢。同樣,API 是一個軟件如何與另一個程序交互以獲得所需服務(wù)的方式。

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














