揭秘RESTful API:深入探讨端点和资源

表述状态转移(REST)是一种软件架构风格,提供了关于API应如何工作的指导方针。它被创建为管理互联网等复杂网络上的通信的准则。REST是一组原则和约束,遵循这些原则和约束可以实现可伸缩、高效和易维护的Web服务的创建。

RESTful APIREST API是遵循REST架构风格设计和与Web服务交互的API。除了使用API在两个或多个软件或应用程序之间通信和共享数据外,RESTful API有助于提高Web应用程序的效率、可伸缩性和灵活性,在Web开发中发挥着重要作用。RESTful API在Web开发方面的其他好处包括无状态性、兼容性和互操作性、简化集成、增强安全性和简单性。

理解RESTful API工作方式的两个核心概念是:端点和资源

  • 资源:资源是任何可识别、命名和操作的信息。它们是通过API公开的关键抽象。

  • 端点:端点是客户端可以与API交互的资源或资源集合的访问点或特定URL(统一资源定位符)或URI。

RESTful架构的主要原则,也称为REST约束,共同定义了RESTful架构并指导遵循这些约束的Web服务的设计。这些原则包括:

  • 无状态性: 客户端向服务器发出的每个请求都必须包含理解和处理请求所需的所有信息。无状态性提高了可伸缩性并简化了服务器的实现。

  • 统一接口: 类似资源通过URL进行标识、资源通过表述进行操作、自描述消息以及客户端与应用程序之间仅通过超媒体(通常称为HATEOAS:超媒体作为应用程序状态的引擎)进行交互等子约束,为统一和一致的接口提供了支持。

  • 客户端-服务器体系结构: RESTful 系统遵循一种结构,其中客户端和服务器是分开的实体,它们通过网络进行通信。客户端负责用户界面和用户体验,而服务器负责处理请求、管理资源和维护应用程序的业务逻辑。这种关注点的分离增强了可伸缩性和灵活性。

  • 分层系统: REST 架构中的每个层都具有特定功能,层与相邻层交互,以促进模块化和可伸缩性。

  • 按需加载代码:这个原则提供了一种方式,允许客户端应用程序加载和执行服务器提供的代码,增强客户端的功能。虽然“按需加载代码”可以提供灵活性,但由于安全考虑和增加客户端与服务器之间耦合度的潜在可能性,并不总是适用于所有场景。是否使用“按需加载代码”取决于正在开发的应用程序的具体要求和约束。

  • 可缓存性:可缓存性通过允许客户端重用先前获取的表示来提高性能,减少对服务器的重复请求。

端点定义资源上执行的功能或操作,比如检索项目列表、创建新项目、更新现有项目或删除项目。RESTful API通常有多个端点,用于对同一资源执行不同操作或处理不同资源。

端点在API设计中发挥着重要作用,作为客户端与API交互的访问点。API设计中一些重要的端点包括:

  • 资源暴露:端点定义API暴露的资源或资源集合,每个端点定义特定的资源或一组资源,明确指出客户端可以与哪些资源或资源集合交互。

  • 操作定义:端点指定客户端可以在资源上执行的操作。HTTP方法如GET、POST、PUT和DELETE用于定义操作。

  • 模块化和可扩展性:端点通过总结与特定资源或资源集相关的特定功能来促进模块化。模块化增强了API的可维护性,并支持可扩展的开发。

  • 清晰直观的设计:通过为端点选择有意义且一致的命名约定,开发人员可以轻松理解每个端点的目的和功能,从而促进API的清晰和直观设计。

根据功能和支持的操作类型,端点有不同类型。一些不同类型的端点包括:

  • 读取和检索端点:用于使用HTTP GET方法从服务器检索资源。

  • 创建或POST端点:用于使用HTTP POST方法在服务器上创建新资源。

  • 删除端点:用于使用HTTP DELETE方法在服务器上删除资源

  • 更新或放置端点:用于使用HTTP PUT方法更新服务器上的现有资源。

  • 搜索或查询端点:允许客户端根据指定条件检索资源子集,使用HTTP GET方法。

  • 列表端点:使用HTTP GET方法检索资源集合或列表。

资源是代表任何可以被识别、命名和操作的信息的关键抽象。资源的例子包括用户配置文件、文章和应用程序处理的任何其他数据实体。资源可以通过独特的统一资源标识符(URI)进行标识。它们通常以JSONXML格式呈现,并且可以使用标准的HTTP方法创建、检索、更新和删除每个资源。

构建RESTful架构的基础是识别其资源。在API设计中识别资源的一些主要准则包括:

  • 使用名词命名资源:在资源名称中使用名词(如“用户”或“产品”),而不是使用像“获取”或“检索”这样的动词。

  • 资源命名约定:为资源遵循一致的命名约定。应使用易于理解和记忆的名称。

  • 使用复数名词表示资源集合:例如’/users’表示用户资源的集合,’/products’表示产品资源的集合。

  • 文档:API应该被清晰记录,以便用户了解可用资源以及如何与其交互。

资源与端点之间的关系对于RESTful API的设计和功能至关重要。它们之间的一些关系包括:

  • 端点作为访问点:端点是指与资源或资源集合相对应的具体URI或URL。它提供了一个具体的访问点,客户端可以通过它与资源进行交互。

  • 端点标识资源:端点标识一个资源或一组资源。例如,如果你有一个代表用户的资源,端点可能是’/users’。

  • HTTP方法定义操作:端点与特定的HTTP方法(GET、POST、PUT、DELETE等)相关联,这些方法定义了可以在相应资源上执行的操作。

  • 资源表示:当客户端与服务器交互时,端点与服务器交换资源的表示。这些表示可以是不同格式的,比如JSON或XML,并包含有关资源的状态或信息。表示是HTTP请求或响应的有效载荷。

  • 统一接口:资源和端点之间的关系遵循REST的统一接口约束。资源和端点的结合创建了一种一致且可预测的API结构。

  • HATEOAS(超媒体作为应用状态的引擎):它涉及在资源表示中包含超媒体链接,允许客户端动态浏览API。

资源和端点之间的互动在RESTful API设计中至关重要,用于开发统一且高效的架构。资源代表概念实体,定义系统的基本实体,如用户或产品。端点由URI表示,作为客户端通过指定的HTTP方法与这些资源交互的入口。遵循RESTful原则,这种共生关系确保了统一接口,自我描述的通信,并通过超媒体链接(HATEOAS)实现动态导航。资源和端点的精心对齐不仅仅是技术细节;它是驱动API清晰、可扩展和适应性的设计概念,为开发人员和用户提供了无缝且直观的体验。

Source:
https://inioluwa2003.hashnode.dev/demystifying-restful-apis-a-deep-dive-into-endpoints-and-resources