服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - REST API的艺术:初学者穿越API空间的旅程与速查表!

REST API的艺术:初学者穿越API空间的旅程与速查表!

2024-01-15 14:05小技术君 编程技术

本文将从深入探讨REST API架构的六个基本原则开始。这些原则包括客户端-服务器架构、状态无关性、可缓存性、分层系统、统一接口和按需代码。阅读至文章末尾获取速查表。

REST API是数字世界的关键组成部分,使不同的应用程序和系统能够无缝地相互通信。我们的旅程将从深入探讨REST API架构的六个基本原则开始。这些原则包括客户端-服务器架构、状态无关性、可缓存性、分层系统、统一接口和按需代码。阅读至文章末尾获取速查表。

REST API的艺术:初学者穿越API空间的旅程与速查表!

REST API设计的六个支柱

REST API的艺术:初学者穿越API空间的旅程与速查表!

六个REST API原则:

(1) 客户端-服务器架构: 这个原则将用户界面关注点与数据存储关注点分离,通过简化服务器组件从而提高界面在各平台上的可移植性,并通过简化服务器组件来增强可伸缩性。

(2) 状态无关交互: 每个客户端到服务器的请求必须包含理解和处理请求所需的所有信息。服务器不存储有关客户端的任何会话信息。

(3) 可缓存的响应: 在REST中,响应必须定义为可缓存或不可缓存。这意味着客户端可以将来等效请求的响应数据进行重用,减轻服务器负载并提高应用程序的效率。

(4) 分层系统: 系统通常以具有特定功能的层组织,使得客户端难以判断它们是直接连接到最终服务器还是中间服务器。

(5) 按需代码: 服务器可以通过传输可执行代码(例如Java小程序或JavaScript)来扩展客户端的功能。

(6) 统一接口: 此约束简化并解耦架构,使每个部分能够独立发展。一致接口的四个指导原则是请求中的资源标识、通过表示操作资源、自描述消息和超媒体作为应用程序状态引擎(HATEOAS)。

  • 自描述消息: 每个来自客户端的消息都带有详细的说明,就像一份精心编写的食谱,准确告诉服务器要做什么。
  • 基于资源: 资源是API世界的名词,如用户、照片、细节,通过URI在请求中进行标识,就像互联网上的地址一样。
  • 通过表示操作: 当客户端获取资源的表示时,它获取了修改或删除资源所需的所有详细信息,假设具有权限。

理解这些原则至关重要,因为它们构成了RESTful API建立和运行的基础。

解剖URI

在快节奏的Web开发世界中,REST API就像数字体内错综复杂的血管网络一样重要。它们对于客户端(如浏览器或移动应用)与服务器(数据存储的地方)之间的通信至关重要。让我们通过一个实际示例来揭示URI(统一资源标识符)的元素:

REST API的艺术:初学者穿越API空间的旅程与速查表!

(1) HTTP方法:互联网的动词

  • GET 求知者: 使用GET请求检索服务器数据,就像向图书馆员询问一本书一样。GET请求应该是安全和幂等的,这意味着多次发出请求不会导致额外的副作用或服务器状态更改。
  • POST:创作者: POST请求创建新资源。在客户端请求服务器处理请求正文中包含的资源时,使用POST是必要的。成功的响应将返回一个包含指向新创建资源的链接的201 Created状态的Location标头。
  • PUT 优秀的编辑者: PUT请求更新现有资源或在特定URL上创建它们(如果它们不存在)。它们是幂等的,因此多次发送相同的请求会产生与发送一次相同的结果。
  • PATCH:微调器: PATCH部分更新资源,就像纠正整本书而不改变整本书一样。它有时是幂等的,但最好在可能的情况下以这种方式实现。
  • DELETE 记录橡皮擦: DELETE请求从服务器的库中删除资源。它们应该是幂等的,后续请求应该返回404 Not Found状态代码。

(2) 协议:参与规则

HTTPS: HTTPS是HTTP的安全版本,使用TLS加密。这是Web服务的黄金标准,保护登录凭据、支付信息和个人数据等敏感数据。最佳实践是默认使用HTTPS以确保数据的完整性和保密性。

(3) 版本控制:保持章节有序

/v1: API版本控制对于在不中断服务的情况下管理更新至关重要。保持一致的版本控制策略,并具有清晰的弃用政策。每个版本都应有文档,并且用户应该被告知新版本。避免过度版本化,为重大更改保留新版本。版本控制是与用户建立的一种契约,承诺在继续发展技术的同时保持稳定性。

(4) 子域:图书馆中的特定过道

api: 子域是组织在线存在的一种很好的方式。使用它们来命名业务的不同区域,分离应用程序环境,简化访问控制,帮助可伸缩性并控制Cookie和会话。只是要注意搜索引擎可能会将子域视为独立的网站。

(5) 端点:流派部分

/users: 端点是表示API的唯一功能或资源的特定URI。它们应该设计得直观、清晰且在所有端点上保持一致。资源命名应该使用名词,并逻辑上表示层次结构和关系。复杂查询应通过查询参数处理。精心设计的端点对于高效、用户友好的API至关重要,就像商场中井然有序的商店提供愉快的购物体验一样。

(6) 分页:索引页面

?page=2&limit=10: 分页将庞大的数据集分解为较小、编号的部分(页面),使数据检索变得可管理和用户友好。使用标准参数,提供导航链接,确保一致的排序,并提供总计和页面元数据。通过使用分页,API确保信息是可访问的,检索信息的体验愉快,就像在井然有序的图书馆中找到合适的书一样。

(7) 过滤:图书馆查询

?age=25&gender=male: 过滤是一种请求满足特定标准的数据的方法。这就像要求知识渊博的导游只向您展示在大型市场中满足您需求的物品一样。为了有效地实施过滤,使用查询参数、清晰一致的命名、支持多个过滤器、高效地查询数据库并记录可用的过滤器。API中的过滤简化了数据检索过程,使其高效且用户友好。通过允许客户端过滤和排序数据,减少了带宽使用并提高了相关性。

通过理解这些URI组件,您正在掌握REST API的艺术。它们是指引数据流动的路标和工具,确保您能够找到并与您需要的信息进行交互。

  • 设计 您的API以反映您的域或数据库架构,创建自然而直观的结构。
  • 密切关注您的API的性能,使用响应时间和状态代码等指标确保最佳运行。
  • 实施强大的身份验证和授权机制,明智地管理CORS,强制执行TLS,实践幂等操作,严格验证输入,限制请求速率,并记录活动而不 compromi敏感数据。

原文地址:https://mp.weixin.qq.com/s?__biz=MzU0NDMzMjY5Ng==&mid=2247488926&idx=1&sn=a7d9276735c0de5a55fd5d84a120f267

延伸 · 阅读

精彩推荐
  • 编程技术Service Mesh 实践之避坑指南

    Service Mesh 实践之避坑指南

    Service Mesh在实践层面往往难于管理、过分复杂。为了避免掉坑,我们必须采取一系列步骤简化这个过程。...

    至顶网10902021-02-22
  • 编程技术Viso 2019 下载与激活方法

    Viso 2019 下载与激活方法

    Visio 是一款专门绘制流程示意图工具,由于很多刚入职的小白没有安装过visio,今天小编抽空给大家分享下Viso 2019 下载与激活方法,感兴趣的朋友一起看看...

    iHADream12092023-05-23
  • 编程技术Xenomai内核解析之Xenomai初探

    Xenomai内核解析之Xenomai初探

    xenomai3于2015年正式发布,从xenomai3开始支持两种方式构建linux实时系统,分别是cobalt 和 mercury。...

    Linux阅码场6862022-04-27
  • 编程技术关于结构体中指针的一些探讨

    关于结构体中指针的一些探讨

    在上篇文章中,有读者对下列代码有疑问,这位读者意识到了name成员是个指针,在没有对指针分配内存时,就直接复制“xiaoming”字符串,这是错误的。先说...

    知晓编程9662022-01-12
  • 编程技术Medusa 又一个 Shopify 的开源替代品!

    Medusa 又一个 Shopify 的开源替代品!

    Medusa是一个开源的headless商务引擎,具有速度快且可定制的优点。由于 Medusa 分为 3 个核心组件 - 公开的REST API headless商务部分、商店的前端以及admin面板 ...

    程序员巴士5412021-12-29
  • 编程技术GCC 12 添加了对 Mold 链接器的支持

    GCC 12 添加了对 Mold 链接器的支持

    GCC 12 编译器带来了一个小改动:支持使用 Mold 链接器(Mold linker)。作为高速链接器的 Mold 1.0 于上周发布,它可以提供比 GNU 旧的 Gold 链接器,甚至 LLVM 的 ...

    开源中国12392021-12-30
  • 编程技术APP开发:iOS和Android应该如何选择?你可以这样做

    APP开发:iOS和Android应该如何选择?你可以这样做

    如果在iOS和Android之间,需要先选择一个作为起步,这个时候,该怎么选呢?iOS和Android,哪个作为起步对产品后期发展更有利?从开发成本、开发周期来看,哪...

    小跑科技9342021-06-21
  • 编程技术thymeleaf实现th:each双重多重嵌套功能

    thymeleaf实现th:each双重多重嵌套功能

    今天给大家分享一个使用 thymeleaf 实现一个动态加载一二级文章分类的功能,本文通过代码讲解的非常详细,具有一定的参考借鉴价值,需要的朋友参考下...

    曲健磊6522020-09-16