REST API

menu icon

REST API

REST API 提供了一种灵活、轻量级的应用程序集成方式,并已成为连接微服务架构中组件的最常用方法。

什么是 REST API?

API(应用程序编程接口)是一组规则,用于定义应用程序或设备如何相互连接和通信。 REST API 是符合 REST(表述性状态转移)架构样式设计原则的 API。 因此,REST API 有时被称为 RESTful API

REST 于 2000 年由计算机科学家 Roy Fielding 博士 在他的博士论文中首次定义,为开发人员提供了相对较高的灵活性和自由度。 REST API 之所以成为连接微服务架构中组件和应用程序的常用方法,灵活性只是其中一个原因。

REST 设计原则

从最基本的层面上讲,API 是一种机制,使一个应用程序或服务能够访问另一个应用程序或服务中的资源。 执行访问的应用程序或服务称为客户机,而包含该资源的应用程序或服务称为服务器。

某些 API(例如 SOAP 或 XML-RPC)采用了严格的开发人员框架。 但是,REST API 几乎可以使用任何编程语言进行开发,并支持多种数据格式。 唯一的要求是它们要符合以下六个 REST 设计原则 - 也称为架构约束:

  1. 统一接口。 无论请求来自何处,对同一资源发出的所有 API 请求都应该看起来相同。 REST API 应确保同一条数据(例如用户的姓名或电子邮件地址)仅属于一个统一资源标识符 (URI)。 资源不应过大,但应包含客户可能需要的每一条信息。
  2. 客户端/服务器解耦。 在 REST API 设计中,客户端和服务器应用程序必须彼此完全独立。 客户端应用程序只需知道所请求资源的 URI 即可; 它不能以任何其他方式与服务器应用程序交互。 同样,除了通过 HTTP 将客户端应用程序传递到所请求的数据外,服务器应用程序不应修改客户端应用程序。
  3. 无状态。 REST API 是无状态的,这意味着每个请求都需要包含处理它所需的全部信息。 换句话说,REST API 不需要任何服务器端会话。 不允许服务器应用程序存储与客户端请求相关的任何数据。
  4. 可缓存性。 如果可能,资源应该可以在客户端或服务器端缓存。 服务器响应还需要包含有关是否允许对交付的资源进行缓存的信息。 目标是提高客户端的性能,同时增强服务器端的可扩展性。
  5. 分层系统架构。 在 REST API 中,调用和响应都会经过多个不同的层。 根据经验,请不要将客户端和服务器应用程序直接相互连接。 通信环路中可能包含多个不同的中介服务器。 需要设计 REST API,让客户端和服务器都无法判断它是与最终应用程序还是中介服务器进行通信。
  6. 按需编码(可选)。 REST API 通常发送静态资源,但在某些情况下,响应也可以包含可执行代码(例如 Java 小程序)。 在这些情况下,代码只应按需运行。

REST API 的工作原理

REST API 通过 HTTP 请求进行通信,以便执行标准数据库功能,例如在资源中创建、读取、更新和删除记录(这些操作也称为 CRUD)。 例如,REST API 可使用 GET 请求检索记录、使用 POST 请求创建记录、使用 PUT 请求更新记录以及使用 DELETE 请求删除记录。 可以在 API 调用中使用所有 HTTP 方法。 精心设计的 REST API 类似于在具有内置 HTTP 功能的 Web 浏览器中运行的 Web 站点。

任何特定时刻或时间戳的资源状态称为资源表示。 几乎可以采用任何格式将该信息传递到客户端,包括 JavaScript 对象表示法 (JSON)、HTML、XLT、Python、PHP 或纯文本。 JSON 非常受欢迎,因为它可以被人类和机器读取,而且与编程语言无关。

在 REST API 调用中,请求头和参数也很重要,因为它们包含重要的标识信息,例如元数据、授权、统一资源标识符 (URI)、缓存、cookie 等。 在精心设计的 REST API 中会使用请求头、响应头和常规 HTTP 状态码。

REST API 最佳实践

尽管灵活性是 REST API 设计的一大优势,但也导致容易设计出受损或性能不佳的 API。 因此,专业开发人员分享了 REST API 规范中的最佳实践。

OpenAPI 规范 (OAS) 建立了一个用于描述 API 的接口,允许任何开发人员或应用程序发现它并完全了解其参数和功能 - 可用端点、每个端点上允许的操作、操作参数、认证方法和其他信息。 最新版本 OAS3(链接位于 IBM 外部)包括动手工具,例如 OpenAPI Generator(用于生成不同编程语言的 API 客户端和服务器存根)。

保护 REST API 也是从行业最佳实践开始,例如,使用散列算法来确保密码安全以及使用 HTTPS 进行安全数据传输。 像 OAuth 2.0(链接位于 IBM 外部)这样的授权框架可以帮助限制第三方应用程序的权限。 使用 HTTP 头中的时间戳记,API 还可以拒绝在特定时间段后到达的任何请求。 也可以通过参数验证和 JSON Web 令牌等方式来确保只有经过授权的客户端才能访问 API。

REST API 和 IBM Cloud

REST API 的优势意味着,它们仍然是软件开发过程中不可或缺的一部分,尤其是在对更好的客户体验和更多应用程序的需求会影响业务和 IT 运营的情况下。

实现更大程度的自动化将有助于满足这些需求。 理想情况下,您可以从可衡量的小型成功项目开始,然后针对其他流程以及组织的其他部门进行扩展和优化。 通过与 IBM 合作,您可以访问基于 AI 的自动化能力,包括预先构建的工作流程,以帮助加速创新,使每个流程都更加智能化。

IBM 工具和服务可帮助您解决与 API 相关的重要问题(包括安全性、治理和自动化),以便您可以继续使应用程序现代化

采取下一步行动:

立即开始使用 IBM Cloud 帐户