一文搞懂 API Endpoint
Hello folks,我是 Luga,今天我們來(lái)聊一下應(yīng)用程序接口(API)生態(tài)相關(guān)的技術(shù)概念 - API Endpoint 。

到底什么是 API ?
API ,即全稱(chēng)為 Application Programming Interface 。在我們的潛意識(shí)中,API 是一種用于促使軟件程序之間相互連接和通信接口。
在深入 API 底層原理之前,我們先了解一下 UI。通常來(lái)講,UI 是用戶(hù)與軟件程序之間的交互界面,它提供了一種可視化或圖形化的方式,使用戶(hù)能夠與程序進(jìn)行溝通和操作。UI 包括用戶(hù)界面元素、布局、交互設(shè)計(jì)等,旨在提供用戶(hù)友好的體驗(yàn)。
API 的工作原理類(lèi)似于用戶(hù)界面(UI),但有一個(gè)關(guān)鍵的區(qū)別:在用戶(hù)界面中,交互是發(fā)生在人與軟件程序之間,而在 API 中,交互是在軟件程序之間,也就是機(jī)器對(duì)機(jī)器的交互。
這種機(jī)器對(duì)機(jī)器的交互可以更高效地傳遞數(shù)據(jù)和執(zhí)行任務(wù)。API 允許不同的軟件程序之間共享和訪問(wèn)信息,使它們能夠相互合作完成復(fù)雜的操作。就像我們?cè)谟脩?hù)界面中點(diǎn)擊按鈕或輸入文本來(lái)與軟件交互一樣,在 API 中,軟件程序使用指定的請(qǐng)求和參數(shù)來(lái)與其他程序進(jìn)行通信。
值得一提的是,雖然 API 和用戶(hù)界面在工作原理上有相似之處,但它們的用途和目標(biāo)不同。用戶(hù)界面旨在提供給人使用的友好界面,使其能夠與軟件進(jìn)行交互和控制。而 API 主要用于程序之間的數(shù)據(jù)傳遞和功能調(diào)用,以實(shí)現(xiàn)更高級(jí)的自動(dòng)化和集成。
下圖來(lái)自 Arnaud Lauret 所著的《Web API 設(shè)計(jì)》一書(shū),用以展示 UI 和 API 之間的相似之處。這張圖可以幫助我們理解 API 的工作原理,并將其與我們對(duì)用戶(hù)界面的熟悉概念進(jìn)行對(duì)比。具體如下所示:

API 是如何工作的 ?
API 的工作原理通常通過(guò)客戶(hù)端和服務(wù)器之間的請(qǐng)求-響應(yīng)通信來(lái)表達(dá)。客戶(hù)端是與用戶(hù)交互的任何前端應(yīng)用程序。服務(wù)器負(fù)責(zé)后端邏輯和數(shù)據(jù)庫(kù)操作。在這種情況下,API 充當(dāng)客戶(hù)端和服務(wù)器之間的中間層,使得發(fā)送數(shù)據(jù)請(qǐng)求和響應(yīng)成為可能。

下面是 API 的工作原理的一般步驟,具體如下所示:
(1) 請(qǐng)求
一個(gè)軟件程序(通常被稱(chēng)為客戶(hù)端)向擁有所需功能或數(shù)據(jù)的另一個(gè)軟件程序(通常被稱(chēng)為服務(wù)器)發(fā)起請(qǐng)求。這個(gè)請(qǐng)求包含了所需的操作和參數(shù),以及其他必要的信息。
(2) 傳輸
請(qǐng)求通過(guò)網(wǎng)絡(luò)傳輸?shù)椒?wù)器。這通常是通過(guò) HTTP(超文本傳輸協(xié)議)進(jìn)行的,但也可以使用其他協(xié)議,如 SOAP(簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)或 RESTful(表述性狀態(tài)轉(zhuǎn)移)。
(3) 處理
服務(wù)器收到請(qǐng)求后,會(huì)根據(jù)請(qǐng)求中的操作和參數(shù)執(zhí)行相應(yīng)的操作。這可能涉及從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)、進(jìn)行計(jì)算、調(diào)用其他功能模塊等。
(4) 響應(yīng)
服務(wù)器處理完請(qǐng)求后,會(huì)生成一個(gè)響應(yīng),并將其發(fā)送回客戶(hù)端。響應(yīng)包含了所請(qǐng)求的數(shù)據(jù)、操作的結(jié)果或其他必要的信息。
(5) 解析
客戶(hù)端接收到服務(wù)器的響應(yīng)后,會(huì)解析響應(yīng)數(shù)據(jù),并根據(jù)需要進(jìn)行處理。這可能涉及將數(shù)據(jù)顯示在用戶(hù)界面上,進(jìn)一步處理數(shù)據(jù),或者觸發(fā)其他操作。
從本質(zhì)上來(lái)講,API 的工作原理可以理解為一種協(xié)議,它定義了客戶(hù)端和服務(wù)器之間的通信規(guī)則和數(shù)據(jù)格式。通過(guò)使用統(tǒng)一的 API,開(kāi)發(fā)人員可以輕松地將不同的軟件組件集成到一起,實(shí)現(xiàn)數(shù)據(jù)共享和功能交互,從而提高系統(tǒng)的靈活性和擴(kuò)展性。
需要注意的是,API 可以是公開(kāi)的(向公眾開(kāi)放)或私有的(僅限于特定的系統(tǒng)或組織內(nèi)部使用)。公開(kāi)的 API 允許開(kāi)發(fā)人員創(chuàng)建第三方應(yīng)用程序或服務(wù),與其他系統(tǒng)進(jìn)行集成,并提供給其他開(kāi)發(fā)人員使用。私有的API主要用于內(nèi)部系統(tǒng)之間的通信和集成。
什么是 API Endpoint ?
API Endpoint 是一個(gè)數(shù)字位置,用于接收關(guān)于特定資源的請(qǐng)求,該資源位于 API 的服務(wù)器上。通常情況下,API Endpoint 是一個(gè)統(tǒng)一資源定位符 (URL),用于指示服務(wù)器上的資源位置。
為了更好理解這個(gè)定義以及 Endpoint 在 API 模型中的位置,讓我們簡(jiǎn)要回顧 API 的工作原理。為了實(shí)現(xiàn)兩個(gè)軟件應(yīng)用程序之間的互聯(lián)互通,一個(gè)應(yīng)用程序(稱(chēng)為客戶(hù)端)向另一個(gè)應(yīng)用程序的 API 發(fā)送請(qǐng)求。客戶(hù)端可以請(qǐng)求服務(wù)器上的資源,或者要求服務(wù)器執(zhí)行特定的操作。
一旦服務(wù)器接收并驗(yàn)證了客戶(hù)端的請(qǐng)求,API 就會(huì)執(zhí)行請(qǐng)求所要求的操作,然后將響應(yīng)發(fā)送回客戶(hù)端。響應(yīng)中包括請(qǐng)求的狀態(tài)(例如,成功完成或被拒絕)以及客戶(hù)端請(qǐng)求的任何資源。
因此,API Endpoint 在整個(gè)過(guò)程中充當(dāng)了一個(gè)入口點(diǎn),用于接收和處理客戶(hù)端請(qǐng)求,并返回相應(yīng)的響應(yīng)。它提供了一種標(biāo)準(zhǔn)化的方式,使客戶(hù)端能夠準(zhǔn)確地定位和訪問(wèn)服務(wù)器上的特定資源。

API Endpoint VS API ?
在實(shí)際的項(xiàng)目開(kāi)發(fā)過(guò)程中,Endpoint 和 API 是 2個(gè)密切相關(guān)的概念,它們之間存在一定的關(guān)系。
API(應(yīng)用程序接口)是一組定義了軟件組件之間交互規(guī)范的接口。它描述了如何使用和訪問(wèn)特定的功能、服務(wù)或數(shù)據(jù)。API 定義了可用的操作、數(shù)據(jù)格式、參數(shù)等,以及與其它軟件組件進(jìn)行通信的方式和協(xié)議。
Endpoint 是 API 中的一個(gè)概念,它是指 API 暴露給外部調(diào)用者的具體訪問(wèn)點(diǎn)或 URL。Endpoint 提供了訪問(wèn) API 的入口,允許客戶(hù)端發(fā)送請(qǐng)求,并從 API 獲取所需的數(shù)據(jù)或執(zhí)行操作。每個(gè) Endpoint 通常代表 API 中的一個(gè)特定資源或功能。
換句話說(shuō),API 是一個(gè)更廣泛的概念,描述了整體的接口規(guī)范和功能,而 Endpoint 是 API 中的具體實(shí)現(xiàn),表示 API 的一個(gè)具體訪問(wèn)點(diǎn)。
通過(guò) API,開(kāi)發(fā)人員可以定義多個(gè)不同的 Endpoint,每個(gè) Endpoint 對(duì)應(yīng) API 的不同功能或資源。每個(gè) Endpoint 可能具有不同的 URL、HTTP 方法、參數(shù)、請(qǐng)求和響應(yīng)數(shù)據(jù)格式等。
總結(jié)來(lái)說(shuō),API 是整體接口的規(guī)范,描述了可用的功能和服務(wù),而 Endpoint 是 API 中的具體訪問(wèn)點(diǎn),表示 API 的實(shí)際可訪問(wèn)的 URL 或路由。Endpoint 實(shí)際上是 API 的具體實(shí)現(xiàn),使得客戶(hù)端可以通過(guò)特定的 URL 和參數(shù)與 API 進(jìn)行交互。
從另一角度而言,端點(diǎn)和 API 是不同的。端點(diǎn)是 API 的一個(gè)組件,而 API 則是一組允許兩個(gè)應(yīng)用程序共享資源的規(guī)則。端點(diǎn)是資源的位置,API 使用端點(diǎn) URL 來(lái)檢索所請(qǐng)求的資源"

為什么需要 API Endpoint ?
通常來(lái)講,API Endpoint 的存在是為了提供一個(gè)可訪問(wèn)和使用 API 的具體入口,使得客戶(hù)端能夠準(zhǔn)確地請(qǐng)求和獲取他們所需的特定資源。它簡(jiǎn)化了 API 的訪問(wèn)方式,并支持不同的操作、版本控制和安全性控制。具體如下所示:
(1) 定位資源
API Endpoint 允許客戶(hù)端明確指定他們想要訪問(wèn)的特定資源。每個(gè) Endpoint 通常代表 API 中的一個(gè)特定資源或功能。通過(guò)使用不同的 Endpoint,客戶(hù)端可以定位和請(qǐng)求他們所需的特定數(shù)據(jù)或執(zhí)行特定的操作。
(2) 簡(jiǎn)化訪問(wèn)方式
API Endpoint 通過(guò)提供一個(gè)統(tǒng)一的 URL 或路由,使得客戶(hù)端能夠簡(jiǎn)化訪問(wèn) API 的方式??蛻?hù)端只需使用特定的 Endpoint URL,無(wú)需了解底層的 API 實(shí)現(xiàn)細(xì)節(jié),就可以輕松地與 API 進(jìn)行通信。
(3) 支持不同操作
API Endpoint 可以支持不同的 HTTP方法(如 GET、POST、PUT、DELETE等),用于在客戶(hù)端和服務(wù)器之間傳遞不同類(lèi)型的請(qǐng)求和操作。通過(guò)使用不同的 HTTP 方法,Endpoint 可以執(zhí)行不同的操作,例如獲取資源、創(chuàng)建新資源、更新資源或刪除資源。
(4) 版本控制
通過(guò)為每個(gè) API 版本提供不同的 Endpoint,可以實(shí)現(xiàn)對(duì) API 的版本控制。這樣,當(dāng) API 進(jìn)行重大更改或升級(jí)時(shí),舊的 Endpoint 可以保持不變,以確?,F(xiàn)有客戶(hù)端的兼容性,而新的 Endpoint 可以引入新的功能或改進(jìn)。
(5) 安全性和權(quán)限控制
API Endpoint 可以用于實(shí)施安全性和權(quán)限控制。通過(guò)對(duì) Endpoint 進(jìn)行身份驗(yàn)證、授權(quán)和訪問(wèn)控制,可以確保只有經(jīng)過(guò)授權(quán)的客戶(hù)端才能訪問(wèn)和使用 API 中的特定資源。






























