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 中的特定资源。