
深入解析API网关策略:认证、授权、安全、流量处理与可观测性
引言
REST 是互联网上计算机之间通信的最常见标准。什么是 REST?为什么它如此流行?让我们来一探究竟。
什么是 API?
API(Application Programming Interface,应用程序编程接口)是两种计算机之间通信的方式。大多数移动和 Web 应用程序与服务器通信时使用的常见 API 标准就是 REST。REST 代表“Representational State Transfer”(代表性状态转移),听起来有点拗口。
它并不是一个具体的规范,而是一套自 2000 年代初以来成为构建 Web API 共同标准的新规则。遵循 REST 标准的 API 被称为 RESTful API。一些实际的例子包括 Twilio、Stripe 和 Google Maps。
RESTful API 的基本概念
RESTful API 将资源组织成一组独特的 URI(Uniform Resource Identifiers,统一资源标识符)。URI 用于区分服务器上的不同资源类型。以下是一些示例:
/products
,而不是 /getAllProducts
。客户端通过 HTTP 向资源的端点发送请求来与资源交互。请求具有非常特定的格式,如下所示:
你可能听说过 CRUD(Create、Read、Update、Delete),这就是它的含义。
请求正文
请求的正文中可以包含一个可选的 HTTP 请求正文,其中包含自定义数据负载,通常以 JSON 格式编码。
服务器响应
服务器接收到请求后,会处理它并将结果格式化为响应。响应的第一行包含 HTTP 状态码,用于告知客户端请求的结果:
表现良好的客户端可以选择重试带有 500 级状态码的失败请求。我们说“可以选择重试”,是因为某些操作不是幂等的,重试时需要格外小心。当 API 是幂等的,多次发送相同的请求与发送一次请求的效果相同。通常,创建新资源的 POST 请求不是幂等的。
响应正文是可选的,可以包含数据负载,通常以 JSON 格式呈现。
无状态
REST 实现应该是无状态的。这意味着双方不需要存储彼此的任何信息,每个请求和响应(周期)都与其他所有请求和响应独立。这使得 Web 应用程序易于扩展且表现良好。
分页
如果 API 端点返回大量数据,应使用分页。常见的分页方案使用“limit”和“offset”作为参数。例如:
GET /products?limit=10&offset=20
如果未指定这些参数,服务器应假设合理的默认值。
版本控制
API 的版本控制非常重要。版本控制允许实现提供向后兼容性,以便在从一个版本引入破坏性更改到另一个版本时,消费者有足够的时间迁移到下一个版本。有许多方法可以对 API 进行版本控制,最直接的方法是在 URI 上为资源前缀添加版本号。例如:
GET /v1/products
RESTful API 在合理应用时简单且有效。它可能不是所有公司的最佳选择,但它简单且足够好,这就是它被广泛使用的原因。还有其他流行的 API 选项,如 GraphQL 和 gRPC,我们将在单独的文章中讨论它们并进行比较。
原文引自YouTube视频:https://www.youtube.com/watch?v=-mN3VyJuCjM