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