API优先型公司的崛起:5个成功案例
什么是API方法?
无论是获取智能家居的天气更新,还是处理在线购物的付款,获取和写入数据的能力都至关重要。这种数据交换的核心是无名英雄:应用程序编程接口 ( API )。对于开发人员来说,了解RESTful API开发至关重要,尤其是在使用高度依赖 API 的现代应用程序时。
在本指南中,我们将探索 API 方法的世界,探索不同的类型、它们使用的底层协议以及API 开发和安全的最佳实践。最后,您将牢牢掌握 API 方法的工作原理,从而能够流畅地构建和使用 API。对于那些刚接触 API 的人来说,让我们先仔细看看 API 是什么。
什么是 API?
从本质上讲,API 充当中介,促进应用程序之间的数据和功能交换。关于 API 工作原理的最常用比喻之一是:将 API 想象成餐厅里的服务员:您(客户)下订单(请求),服务员将您的订单传达给厨房(服务器),然后将食物送回来(响应)。同样,API 允许一个应用程序从另一个应用程序请求数据或服务,然后接收相应的响应。不同的 API 端点(例如 /accounts** 和/users端点)将返回不同类型的数据。可以根据请求的功能向这些特定端点发出 GET、POST、PUT 和 PATCH 等请求,例如 GET 用于检索数据,而 POST 用于创建数据。
API 的定义和目的
API 的首字母缩写代表应用程序编程接口。每次使用 Facebook 等应用程序、发送即时消息或在手机上查看天气时,您都在使用 API。
API 的目的是通过抽象底层复杂性来简化应用程序的开发。开发人员不必从头开始构建所有内容,而是可以利用现有的 API 来访问其他应用程序的数据和功能。这不仅节省了时间和资源,而且还通过使开发人员能够在他人的工作基础上进行构建来促进创新。它们也在内部使用,允许应用程序架构中的各个层相互通信。
API 简史和演变
API 已经存在了几十年,但近年来,随着 Web 开发和移动应用的兴起,API 的受欢迎程度呈爆炸式增长。早期,API 主要用于单个应用程序不同组件之间的内部通信。然而,随着互联网的发展,API 开始用于不同应用程序之间的外部通信。
API 的演变可以追溯到多个阶段,从早期的专有接口到如今主导我们见到的大多数 API 交互的现代RESTful API。这种演变是由对更高标准化、灵活性和易用性的渴望所驱动的。因此,API 变得更容易被开发人员使用,从而导致开发人员可以访问的 API 端点数量激增。
API 类型和协议
就像人类世界中存在不同的交流方式(口语、书面语、手语等)一样,API 也有不同的交流方式。这些通信方法称为协议。不同的 API 类型旨在解决特定用例并优化各种场景中的数据交换。让我们探索一些最常见的 API 类型及其相关协议:
REST API
REST API是当今网络上最流行的 API 类型。它们遵循 REST 架构风格的原则,强调简单性、可扩展性和无状态性。REST API 使用标准 HTTP 方法(GET、POST、PUT、DELETE)与资源交互,因此相对容易理解和实现。
- GET:从服务器检索数据。GET API 方法用于从服务器访问资源和特定数据,例如从 API 端点检索用户列表或特定用户数据。
- POST:在服务器上创建新资源。
- PUT:更新服务器上现有的资源。
- 删除:从服务器删除资源。
REST API 广泛用于构建 Web 服务、移动应用和其他需要通过互联网与数据交互的应用程序。很多时候,当开发人员提到 API 时,他们指的是 RESTful API。
SOAP API
与 REST API 相比,SOAP API 是一种更正式、更结构化的 API。它们依赖 XML 进行数据交换,并使用一套严格的规则和协议进行通信。这使得 SOAP API 比 REST API 更安全、更可靠,但实现起来也更复杂。SOAP API 仍然常用于安全性和可靠性至关重要的企业应用程序。
GraphQL API
GraphQL 是一种相对较新的 API,由 Facebook 开发。它允许客户端精确请求他们需要的数据,不多也不少。与 REST API 相比,这是一个显著的优势,因为 REST API 通常会返回比必要更多的数据(称为过度获取),从而导致性能下降。GraphQL API在构建现代 Web 和移动应用程序方面越来越受欢迎。
Webhook API
Webhook 是一种让一个应用程序在特定事件发生时通知另一个应用程序的方式。例如,可以使用 webhook 在进行新付款时通知支付处理应用程序,Stripe就是这种情况。这允许应用程序实时订阅事件并做出反应,这对于许多类型的应用程序都很重要。
RPC API
RPC API 允许一个应用程序调用另一个应用程序中的函数或过程。这对于构建分布式系统非常有用,因为系统的不同组件在不同的机器上运行。RPC API 通常用于系统不同组件之间的内部通信。
了解不同类型的 API 及其协议对于为您的应用程序选择正确的 API 类型至关重要。最适合您项目的 API 类型取决于您的特定用例和应用程序的要求。
了解 HTTP 方法
在与 RESTful API(如我们所讨论的,这是最常见的类型)交互时,我们利用 HTTP 方法对其公开的资源执行各种操作。这些方法是 API 通信语言中的动词,告诉服务器我们在调用端点时要采取什么操作。
HTTP 方法特征
在深入研究每种方法之前,让我们先了解一些关键特征:
安全方法(GET、HEAD、OPTIONS)
- 只读:安全方法旨在检索数据而不修改服务器的状态。它们应该没有副作用。
- GET:获取数据的最常用方法。它请求指定资源的表述。
- HEAD:与 GET 类似,但仅返回 HTTP 响应的标头(用于检查元数据而无需下载整个资源)。
- OPTIONS:用于发现资源可用的通信选项(例如,支持哪些 HTTP 方法)。
幂等方法(PUT、DELETE、PATCH)
- 可重复:幂等方法可以被调用多次,而不会改变初始应用之外的结果。
- PUT:用请求正文中提供的数据替换整个资源。
- DELETE:删除指定的资源。
- PATCH:部分修改资源,仅更新请求正文中指定的字段。
您可能会注意到,HTTP POST 方法未列在上述任何组中。由于 POST 用于在资源集合中创建新的下属资源,因此它既不安全也不幂等,这意味着调用两个相同的 POST 请求将产生两个不同的资源。
深入了解 HTTP 方法
现在,让我们更详细地探讨每个 API 方法:
GET 方法
检索数据但不修改它
GET 方法是 API 交互的主力。它用于从服务器获取数据而不引起任何更改。它的典型工作方式如下:
- 客户端请求:客户端向特定端点发送 GET 请求(例如,/users/123)。
- 服务器响应:服务器处理请求,定位资源(如果存在),并在响应主体中返回资源当前状态的表示。
示例:对/products端点的 GET 请求可能会返回 JSON 格式的所有可用产品的列表。
POST 方法
创建新资源
POST 方法用于在服务器上创建新资源。以下是一般流程:
- 客户端请求:客户端向端点发送 POST 请求(例如/orders)。
- 请求正文:请求正文包含新资源的数据(例如,订单详细信息,包括商品、数量和送货地址)。
- 服务器响应:服务器处理请求,创建新的资源,并通常在响应主体中返回新创建资源的详细信息。
示例:向/users发送包含用户详细信息的POST 请求可能会创建一个新的用户帐户。
PUT 方法
更新现有资源
PUT 方法旨在用请求正文中提供的数据完全替换现有资源。
- 客户端请求:客户端向特定资源端点 (例如/products/456 ) 发送 PUT 请求。
- 请求正文:正文包含更新资源的完整表述。
- 服务器响应:服务器用新数据替换现有资源,并通常返回更新的资源表示或成功状态代码。
示例:向/users/123发送包含更新的用户信息的 PUT 请求将完全覆盖现有的用户数据。
PATCH 方法
部分更新现有资源
- PATCH 方法用于更新现有资源。
- PATCH 使客户端能够更新资源上的特定属性而不覆盖其他属性。
DELETE 方法
删除资源
PATCH 方法提供更细粒度的更新方法。它允许修改特定字段,而不是替换整个资源。
- 客户端请求:客户端向资源端点发送 PATCH 请求。
- 请求正文:正文包含一组指令(通常为 JSON Patch 格式),描述要应用的更改。
- 服务器响应:服务器应用更改并返回更新的资源或成功代码。
示例:对/users/123 的PATCH 请求可能包含仅更改用户电子邮件地址的指令,而其他字段保持不变。
结论
在构建和使用 RESTful API 时,了解这些不同的 HTTP/API 方法的工作原理至关重要。这些方法(无论是 GET、POST、PUT、PATCH 还是 DELETE)都是驱动应用程序之间通信的动词,使它们能够无缝交换数据和功能。
通过了解 API 方法,您可以利用这些知识来:
- 构建强大的应用程序:创建利用不同软件组件优势的互连系统。
- 增强用户体验:通过有效的错误处理和状态代码提供流畅的交互和信息反馈。
- 保护您的数据:实施身份验证和授权以保护敏感信息免遭未经授权的访问。