所有文章 > API术语解释 > 什么是 REST API?示例、用途和挑战
什么是 REST API?示例、用途和挑战

什么是 REST API?示例、用途和挑战

应用程序编程接口 (API) 有多种形状和大小,这使得新手很难理解它们是什么以及如何使用它们。在 Postman,我们非常喜欢使用 API,对此乐此不疲。我们深信,API 既能用于娱乐,也能服务于商务。为了帮助说明我们如何看待 API 的世界,我们精心设计了一个新的公共 API 集合,其中包括供新手使用的 REST API 示例。

鉴于API之间存在诸多差异,Postman致力于清晰阐述RESTful API、GraphQL API以及SOAP原始格式之间的微妙差别,因此它成为了理解所有HTTP API如何运作(以及为何可能不运作)并通过实际API示例进行深入学习的理想平台。由于 REST API 是当今 Web、移动和设备应用程序的支柱,因此全面了解它们是什么非常重要。

什么是 REST API?

REST API,也称为 RESTful API,是一个简单、统一的接口,用于通过 Web URL 提供数据、内容、算法、媒体和其他数字资源。REST API 是当今 Web 上最常用的 API。

REST API 的历史

在 REST 之前,大多数开发人员必须处理 SOAP 来集成 API。SOAP因其构建、使用及调试过程的复杂性而声名狼藉。幸运的是,由 Roy Fielding 领导的一组开发人员创建了 REST,永远改变了 API 的格局。

以下是 REST API 的历史时间表:

  • REST 之前:开发人员使用 SOAP 来集成 API,方法是手写正文中带有远程过程调用 (RPC) 的 XML 文档。然后,开发人员将指定终端节点并将其 SOAP 信封 POST 到该终端节点。
  • 2000 年:包括 Roy Fielding 在内的一组开发人员决定创建一个标准,以便任何一个服务器都可以与任何其他服务器通信。他定义了 REST API 的约束。由于这些规则是通用的,因此开发人员可以更轻松地集成必要的软件。
  • 2002 年:2002 年,eBay 构建了 REST API,将其市场扩展到任何可以访问其 API 的站点。结果,它引起了另一家电子商务巨头亚马逊的注意,亚马逊于 2002 年宣布了他们的 API。
  • 2004 年至 2006 年:2004 年,Flickr 随后推出了他们的 RESTful API,使博主能够轻松地将图像嵌入到他们的网站以及他们的社交媒体源中。然后,Facebook Twitter 在两年后都发布了他们的 API,因为他们意识到大量开发人员正在抓取这些网站并创建“弗兰肯斯坦”API。
  • 2006 年至今:如今,开发人员已经完全接受了 RESTful API,使用它们在他们的网站和应用程序中添加功能。Postman 简化了构建 API 的过程并简化了协作,因此您可以更快地创建 API。

什么是 REST API 标准,为什么它们很重要?

REST API 标准是我们数字世界的通用语言。它们不仅为开发人员提供了一种统一且一致的方法来创建和使用API,而且还优化了依赖这些API运行的应用程序的健康状况与性能表现。

要使 API 服务 RESTful 的,必须满足 6 个指导约束:

使用统一界面 (UI)

要拥有统一的接口,需要多个架构约束来指导组件的行为。此外,资源应该是唯一的,以便可以通过单个 URL 识别它们。

基于客户端-服务器

统一的界面将用户关注点与数据存储关注点分开。客户端的域关注 UI 和请求收集,而服务器的域关注关注数据访问、工作负载管理和安全性。客户端和服务器的分离使每个客户端都可以独立于另一个进行开发和增强。

无状态操作

从客户端到服务器的请求必须包含所有必要的信息,以便服务器可以理解并相应地处理它。服务器无法保存有关客户端状态的任何信息。

RESTful 资源缓存

对请求的响应中的数据必须标记为可缓存或不可缓存。

分层系统

REST 允许由分层组成的架构。这样一来,每个组件就无法看到它们正在交互的直接层之外。

按需编码

由于 REST API 以小程序或脚本的形式下载和执行代码,因此客户端功能更多。通常,服务器会以 XML 或 JSON 的形式发回资源的静态表示。服务器还可以在必要时向客户端发送可执行代码。

REST API 的工作原理是什么?

要理解REST API的工作原理,认识资源是至关重要的。资源可以是可以命名的任何信息,例如文档或图像、其他资源的集合、非虚拟对象等。同时,REST 使用资源标识符来识别组件之间交互中涉及的特定资源。

method 是您发送到服务器的请求类型。与 REST API 关联的四种主要资源方法是:

  1. 获取: 此方法允许服务器找到您请求的数据并将其发送回给您。
  2. 放:如果您执行 ‘PUT’ 请求,则服务器将更新数据库中的条目。
  3. 发布:此方法允许服务器在数据库中创建新条目。
  4. 删除: 此方法允许服务器删除数据库中的条目。

REST 与 SOAP API

在应用程序编程接口 (API) 行业中,一直存在着关于 SOAP 与 REST 的争论。SOAP 和 REST 是构建 API 的两种不同方法。SOAP 被视为一种协议,而 REST 被视为一组准则。REST 允许使用 JSON、URL 和 HTTP 等方法进行灵活的 API 开发,而 SOAP 使用 XML 发送数据。在规划下一个API时,若要确定哪种架构风格最适合,了解构建适当设计的优缺点是至关重要的。

简单对象访问协议 (SOAP) 对于确立系统间交换并由应用程序所采纳的消息格式具有重要作用。与 REST 相比,SOAP 是一种实际协议,它为您提供有关 API 功能的更严格详细信息。尽管 SOAP 可能不是较新的移动开发人员的合适选择,但它为企业资源集成提供了坚实的基础。这里的主要收获是,SOAP 提供了一种可靠、可靠的模式,当您不需要像 REST 这样更以日期为中心的 API 设计模式时,可以使用它。

REpresentational State Transfer (REST) 是一种软件架构风格,用于交付遵循Web所依赖的HTTP规范的API REST API 利用统一资源定位器 (URL) 使数据可通过 Web 使用。这有助于最终最大限度地利用 HTTP 方法、标头和其他基本的 Web 构建块。与 SOAP 不同,REST 是大多数团队开始投资 API 时的常见起点,因为它提供了一组简单且被广泛认可的设计模式。

REST API 有什么用途?

REST 的主要优势之一是它们提供了很大的灵活性,这使您可以使用此特定 API 执行更多操作。下面列出了 REST API 的用途示例

云应用程序

云应用程序中,REST API非常有用,因为它们的调用具有无状态性。如果出现问题,无状态组件可以顺利地重新部署和扩展以适应负载变化。文档共享、存储、财务和会计、客户关系管理 (CRM)、库存控制和收集信息是使用基于云的应用程序执行的一些工作。

云服务

REST 在云服务中也很有帮助,因为您需要控制如何解码 URL 以通过 API 绑定到服务。话虽如此,云计算和微服务无疑将使 RESTful API 设计成为未来的规则。

Web 使用

由于 REST 不依赖于客户端技术,因此可以从客户端 Web 项目、iOS 应用程序、IoT 设备或 Windows Phone 访问这些 API。您可以为您的组织构建基础设施,而无需担忧会被局限于特定的客户端堆栈中。

使用 REST API 的好处

REST 比 SOAP 更可取,原因有几个。以下是 REST API 的一些优势:

  • 可扩展性: 由于客户端和服务器之间的分离,开发团队可以毫不费力地扩展该产品。
  • 灵活性和便携性: 由于 REST 样式的 API 要求正确发送其中一个请求中的数据,因此可以执行从一个服务器到另一个服务器的迁移。也可以随时对数据库进行更改。
  • 独立: 由于客户端和服务器之间的分离,该协议使整个项目的开发更容易独立进行。REST API 还可以适应工作语法和平台,这提供了在开发时一次测试多个环境的机会。
  • 轻: REST API 轻量级且快速,因为它们利用支持多种格式(包括 JSON、XML 和 HTML)的 HTTP 标准。此功能使其成为移动应用程序项目、IoT 设备等的理想选择。

使用 REST API 的挑战

除了设计和架构限制外,个人在使用 REST API 时还必须应对一些挑战。这些挑战可能包括:

REST 端点共识

如何格式化 URL 并不重要,但 API 的一致性至关重要。不幸的是,随着操作的复杂,组合的数量会进一步增加。因此,在具有许多开发人员的大型代码库上可能很难实现一致性。

REST API 版本控制

API 版本控制是创建 API 的多个版本的做法,以适应更改或更新,而不会中断使用者。为了防止出现兼容性问题,通常会对 API 进行版本控制。然而,旧的终端节点仍然处于活跃状态,这会增加工作负载,因为需要同时维护多个API。

REST API 身份验证

API 身份验证将根据其使用环境而有所不同。某些第三方应用程序被视为具有特定权限的登录用户。注册用户可以使用其他第三方应用程序,他们只能访问他们的数据,例如查找电子邮件或文档。可能有 20 多种不同的授权方法正在使用,这大大增加了您进行第一次 API 调用的难度。由于一开始便存在诸多阻碍,开发人员有时最终会选择放弃。

四种常见的身份验证方法包括:

HTTP 身份验证

HTTP 为 REST API 实现提供身份验证方案。两种常见的方案是:

  • 基本身份验证: HTTP 基本身份验证 (BA) 是一种用于控制对 Web 资源的访问的简单技术。它不需要 Cookie、会话标识符或登录页面。相反,它使用 HTTP 标头中的标准字段。
  • 不记名身份验证: 不记名身份验证(也称为令牌身份验证)是一种 HTTP 身份验证方案,涉及使用不记名令牌来确保安全性。

API 密钥

对 REST API 进行身份验证的一种方法是使用 API 密钥。当客户端首次连接到服务器时,会为其提供一个唯一标识符。然后,此唯一 API 密钥将用于对每个后续请求进行身份验证,以检索资源。请务必注意,API 密钥存在安全风险,因为它们必须与每个请求一起传输,因此可能会被拦截。

OAuth

OAuth 是一种安全协议,它通过组合密码和令牌来提供对任何系统的高度安全的登录访问。授权过程从服务器请求密码开始,然后是额外的令牌以完成该过程。

REST API 安全性

尽管 RESTful API 提供了一种更简单的方法来访问和操作您的应用程序,但安全问题仍然可能发生。例如,客户端每秒可以发送数千个请求并导致服务器崩溃。其他 REST API 安全挑战包括:

  • 缺乏适当的身份验证
  • 没有速率限制和限制
  • 无法加密有效负载数据
  • HTTPS 的实现不正确
  • 容易泄露的弱 API 密钥

多个请求和不必要的数据

响应中可能包含比您实际需要更多的数据,或者您需要发起进一步的请求才能获取到全部所需的数据。

REST API 最佳实践

在 REST API 设计中遵循这些最佳实践不仅可以确保服务器和客户端之间的通信更加顺畅,还可以增强安全性、可维护性和性能。

正确使用 HTTP 状态代码

请务必使用与请求结果最一致的 HTTP 状态代码,因为此信息有助于 API 客户端了解如何继续。

常见的 HTTP 状态代码包括:

  • 200 OK:表示请求成功,响应正文包含请求的资源。
  • 404 Not Found:表示服务器找不到请求的资源,通常是由于键入错误的 URL 或已移动或删除的资源。
  • 400 错误请求:表示由于客户端错误(例如语法无效或请求中缺少必需参数),服务器无法处理请求。
  • 500 Internal Server Error:表示服务器遇到了阻止其完成请求的意外情况,通常是客户端无法控制的服务器端问题。
  • 302 Found (Moved Temporarily):表示请求的资源已临时移动到其他 URL。客户端应向响应标头中提供的新 URL 发出另一个请求。
  • 401 未授权:表示请求需要用户身份验证,但客户端尚未提供有效凭据或尚未进行身份验证。

提供信息丰富的错误消息

错误消息应当清晰明了且富有描述性,同时,如果可能的话,还应包含关于如何解决问题的相关指导信息。这有助于 API 的使用者了解问题并知道如何修复它。

保护您的 API

实施 API 安全措施(例如输入清理、身份验证和基于角色的访问控制)以保护您的 API 和用户数据至关重要。

对 API 进行版本控制

API 版本控制用于管理更改并保持与旧版本 API 的兼容性。它有助于避免对现有用户造成中断性变更,同时为新功能的开发与改进提供支持。

记录您的 API

提供全面、易于阅读的 API 文档,其中包括请求和响应示例、身份验证详细信息和错误代码。

允许筛选、排序和分页

当 REST API 尝试一次返回过多数据时,它们可能会变慢或崩溃。这可以通过使用筛选和分页来避免。筛选会缩小搜索结果的范围,而分页仅返回少量数据。这两种策略都可以提高性能并防止系统过载。

在端点路径中使用 instead of verbs

HTTP 方法是动词,因此最好在终端节点路径中使用名词而不是动词。路径名应表示 API 端点正在检索或操作的实体,例如 .在路径名中包含动词会使其不必要地变长,而不会传达新信息。/product

REST API 示例

现在您已经了解了什么是 REST API,让我们看一些示例:

REST API 示例
公共 Postman Collection 中的各种 REST API 示例

Amazon S3

随着众多顶级公司纷纷提供这些服务,越来越多的应用开始将REST API应用于人工智能、数据科学和机器学习领域。Amazon 的 AWS AI Services 允许开发人员将 AI 功能整合到他们的应用程序中,以实现更具适应性和智能性的交互。这还可以通过检测潜在的安全漏洞来帮助保护系统之间的数据交换。

Twitter

Twitter 每月拥有 4.5 亿活跃用户,在社交媒体领域拥有巨大的影响力。对于开发人员来说,Twitter API 提供了一种集成 Twitter 功能并通过该平台推广其应用程序的方法。

使用 Twitter API,开发人员可以利用 Twitter 的识别系统来简化注册过程。该 API 还支持根据位置或热门话题标签等标准向用户显示推文,以及如何使用 Twitter 数据进行有效营销。

Instagram

Instagram Basic Display API 为开发人员提供了对平台上个人资料数据、图像和视频的访问权限。这使得开发人员能够构建应用程序,从而将他们自己的产品与Instagram中的用户数据进行集成。此外,您可以将 Instagram API 集合用于专业帐户,使用户能够管理他们的在线活动。

Plaid

不断增长的 SaaS 产品市场正在推动 REST API 在金融科技领域的增长,而 Plaid 是引领金融服务“数据民主化”的顶级公司之一。这种方法使每个人都可以访问数据,无论其技术能力如何,从而能够创建满足用户需求的自定义体验。

关于 REST API 的最终想法

在本文中,您深入了解了 REST API 是什么、它是如何工作的、它的用途等等。您还了解了 SOAP 和 REST 之间的区别。学习 API 对于新开发人员来说可能具有挑战性和艰巨性,但为了帮助您在职业生涯中不断成长和进步,Postman精心打造了一个新的公共REST API集合以及API词汇表,供您深入拓展对各种REST API的知识和理解。

在 Postman,我们努力使 API 更易于访问和使用。我们希望您发现、使用并找到您在个人和专业领域中使用 API 技术时正在寻找的价值。开始增长、进步和扩展您的 REST API 知识。

原文链接:https://blog.postman.com/rest-api-examples/

#你可能也喜欢这些API文章!