Hello folks,我是 Luga,今天我們來聊一下應(yīng)用程序接口(API)生態(tài)相關(guān)的技術(shù)概念 - API Endpoint 。
— 01 —
到底什么是 API ?
API ,即全稱為 Application Programming Interface 。在我們的潛意識中,API 是一種用于促使軟件程序之間相互連接和通信接口。
在深入 API 底層原理之前,我們先了解一下 UI。通常來講,UI 是用戶與軟件程序之間的交互界面,它提供了一種可視化或圖形化的方式,使用戶能夠與程序進行溝通和操作。UI 包括用戶界面元素、布局、交互設(shè)計等,旨在提供用戶友好的體驗。
API 的工作原理類似于用戶界面(UI),但有一個關(guān)鍵的區(qū)別:在用戶界面中,交互是發(fā)生在人與軟件程序之間,而在 API 中,交互是在軟件程序之間,也就是機器對機器的交互。
這種機器對機器的交互可以更高效地傳遞數(shù)據(jù)和執(zhí)行任務(wù)。API 允許不同的軟件程序之間共享和訪問信息,使它們能夠相互合作完成復(fù)雜的操作。就像我們在用戶界面中點擊按鈕或輸入文本來與軟件交互一樣,在 API 中,軟件程序使用指定的請求和參數(shù)來與其他程序進行通信。
值得一提的是,雖然 API 和用戶界面在工作原理上有相似之處,但它們的用途和目標不同。用戶界面旨在提供給人使用的友好界面,使其能夠與軟件進行交互和控制。而 API 主要用于程序之間的數(shù)據(jù)傳遞和功能調(diào)用,以實現(xiàn)更高級的自動化和集成。
下圖來自 Arnaud Lauret 所著的《Web API 設(shè)計》一書,用以展示 UI 和 API 之間的相似之處。這張圖可以幫助我們理解 API 的工作原理,并將其與我們對用戶界面的熟悉概念進行對比。具體如下所示:
— 02 —
API 是如何工作的 ?
API 的工作原理通常通過客戶端和服務(wù)器之間的請求-響應(yīng)通信來表達。客戶端是與用戶交互的任何前端應(yīng)用程序。服務(wù)器負責(zé)后端邏輯和數(shù)據(jù)庫操作。在這種情況下,API 充當客戶端和服務(wù)器之間的中間層,使得發(fā)送數(shù)據(jù)請求和響應(yīng)成為可能。
下面是 API 的工作原理的一般步驟,具體如下所示:
1、請求
一個軟件程序(通常被稱為客戶端)向擁有所需功能或數(shù)據(jù)的另一個軟件程序(通常被稱為服務(wù)器)發(fā)起請求。這個請求包含了所需的操作和參數(shù),以及其他必要的信息。
2、傳輸
請求通過網(wǎng)絡(luò)傳輸?shù)椒?wù)器。這通常是通過 HTTP(超文本傳輸協(xié)議)進行的,但也可以使用其他協(xié)議,如 SOAP(簡單對象訪問協(xié)議)或 RESTful(表述性狀態(tài)轉(zhuǎn)移)。
3、處理
服務(wù)器收到請求后,會根據(jù)請求中的操作和參數(shù)執(zhí)行相應(yīng)的操作。這可能涉及從數(shù)據(jù)庫中檢索數(shù)據(jù)、進行計算、調(diào)用其他功能模塊等。
4、響應(yīng)
服務(wù)器處理完請求后,會生成一個響應(yīng),并將其發(fā)送回客戶端。響應(yīng)包含了所請求的數(shù)據(jù)、操作的結(jié)果或其他必要的信息。
5、解析
客戶端接收到服務(wù)器的響應(yīng)后,會解析響應(yīng)數(shù)據(jù),并根據(jù)需要進行處理。這可能涉及將數(shù)據(jù)顯示在用戶界面上,進一步處理數(shù)據(jù),或者觸發(fā)其他操作。
從本質(zhì)上來講,API 的工作原理可以理解為一種協(xié)議,它定義了客戶端和服務(wù)器之間的通信規(guī)則和數(shù)據(jù)格式。通過使用統(tǒng)一的 API,開發(fā)人員可以輕松地將不同的軟件組件集成到一起,實現(xiàn)數(shù)據(jù)共享和功能交互,從而提高系統(tǒng)的靈活性和擴展性。
需要注意的是,API 可以是公開的(向公眾開放)或私有的(僅限于特定的系統(tǒng)或組織內(nèi)部使用)。公開的 API 允許開發(fā)人員創(chuàng)建第三方應(yīng)用程序或服務(wù),與其他系統(tǒng)進行集成,并提供給其他開發(fā)人員使用。私有的API主要用于內(nèi)部系統(tǒng)之間的通信和集成。
— 03 —
什么是 API Endpoint ?
API Endpoint 是一個數(shù)字位置,用于接收關(guān)于特定資源的請求,該資源位于 API 的服務(wù)器上。通常情況下,API Endpoint 是一個統(tǒng)一資源定位符 (URL),用于指示服務(wù)器上的資源位置。
為了更好理解這個定義以及 Endpoint 在 API 模型中的位置,讓我們簡要回顧 API 的工作原理。為了實現(xiàn)兩個軟件應(yīng)用程序之間的互聯(lián)互通,一個應(yīng)用程序(稱為客戶端)向另一個應(yīng)用程序的 API 發(fā)送請求。客戶端可以請求服務(wù)器上的資源,或者要求服務(wù)器執(zhí)行特定的操作。
一旦服務(wù)器接收并驗證了客戶端的請求,API 就會執(zhí)行請求所要求的操作,然后將響應(yīng)發(fā)送回客戶端。響應(yīng)中包括請求的狀態(tài)(例如,成功完成或被拒絕)以及客戶端請求的任何資源。
因此,API Endpoint 在整個過程中充當了一個入口點,用于接收和處理客戶端請求,并返回相應(yīng)的響應(yīng)。它提供了一種標準化的方式,使客戶端能夠準確地定位和訪問服務(wù)器上的特定資源。
— 04 —
API Endpoint VS API ?
在實際的項目開發(fā)過程中,Endpoint 和 API 是 2個密切相關(guān)的概念,它們之間存在一定的關(guān)系。
API(應(yīng)用程序接口)是一組定義了軟件組件之間交互規(guī)范的接口。它描述了如何使用和訪問特定的功能、服務(wù)或數(shù)據(jù)。API 定義了可用的操作、數(shù)據(jù)格式、參數(shù)等,以及與其它軟件組件進行通信的方式和協(xié)議。
Endpoint 是 API 中的一個概念,它是指 API 暴露給外部調(diào)用者的具體訪問點或 URL。Endpoint 提供了訪問 API 的入口,允許客戶端發(fā)送請求,并從 API 獲取所需的數(shù)據(jù)或執(zhí)行操作。每個 Endpoint 通常代表 API 中的一個特定資源或功能。
換句話說,API 是一個更廣泛的概念,描述了整體的接口規(guī)范和功能,而 Endpoint 是 API 中的具體實現(xiàn),表示 API 的一個具體訪問點。
通過 API,開發(fā)人員可以定義多個不同的 Endpoint,每個 Endpoint 對應(yīng) API 的不同功能或資源。每個 Endpoint 可能具有不同的 URL、HTTP 方法、參數(shù)、請求和響應(yīng)數(shù)據(jù)格式等。
總結(jié)來說,API 是整體接口的規(guī)范,描述了可用的功能和服務(wù),而 Endpoint 是 API 中的具體訪問點,表示 API 的實際可訪問的 URL 或路由。Endpoint 實際上是 API 的具體實現(xiàn),使得客戶端可以通過特定的 URL 和參數(shù)與 API 進行交互。
從另一角度而言,端點和 API 是不同的。端點是 API 的一個組件,而 API 則是一組允許兩個應(yīng)用程序共享資源的規(guī)則。端點是資源的位置,API 使用端點 URL 來檢索所請求的資源"
— 05 —
為什么需要 API Endpoint ?
通常來講,API Endpoint 的存在是為了提供一個可訪問和使用 API 的具體入口,使得客戶端能夠準確地請求和獲取他們所需的特定資源。它簡化了 API 的訪問方式,并支持不同的操作、版本控制和安全性控制。具體如下所示:
1、定位資源
API Endpoint 允許客戶端明確指定他們想要訪問的特定資源。每個 Endpoint 通常代表 API 中的一個特定資源或功能。通過使用不同的 Endpoint,客戶端可以定位和請求他們所需的特定數(shù)據(jù)或執(zhí)行特定的操作。
2、簡化訪問方式
API Endpoint 通過提供一個統(tǒng)一的 URL 或路由,使得客戶端能夠簡化訪問 API 的方式。客戶端只需使用特定的 Endpoint URL,無需了解底層的 API 實現(xiàn)細節(jié),就可以輕松地與 API 進行通信。
3、支持不同操作
API Endpoint 可以支持不同的 HTTP方法(如 GET、POST、PUT、DELETE等),用于在客戶端和服務(wù)器之間傳遞不同類型的請求和操作。通過使用不同的 HTTP 方法,Endpoint 可以執(zhí)行不同的操作,例如獲取資源、創(chuàng)建新資源、更新資源或刪除資源。
4、版本控制
通過為每個 API 版本提供不同的 Endpoint,可以實現(xiàn)對 API 的版本控制。這樣,當 API 進行重大更改或升級時,舊的 Endpoint 可以保持不變,以確保現(xiàn)有客戶端的兼容性,而新的 Endpoint 可以引入新的功能或改進。
5、安全性和權(quán)限控制
API Endpoint 可以用于實施安全性和權(quán)限控制。通過對 Endpoint 進行身份驗證、授權(quán)和訪問控制,可以確保只有經(jīng)過授權(quán)的客戶端才能訪問和使用 API 中的特定資源。