REST API、HTTP API 与 WebSocket API
了解 REST API(功能丰富)、HTTP API(低延迟、低成本)和 WebSocket API(双向通信)之间的权衡,并进行恰当选择。
REST API、HTTP API 与 WebSocket API 是 CoddyKit 上的免费 AWS Solutions Architect 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AWS Solutions Architect 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AWS Solutions Architect 课程共包含 4 节课。
API Gateway 的作用
Amazon API Gateway 是一项完全托管的服务,支持您以任意规模创建、发布、保护和监控 API。它充当后端服务的前门,这些服务可以是 Lambda 函数、EC2 实例、HTTP 后端或任何 AWS 服务。API Gateway 负责流量管理、授权、限流、监控和 API 版本控制,因此您的后端可以专注于业务逻辑,而不必处理 API 基础设施问题。
REST API:功能丰富的传统 API
REST API(原始的 API Gateway 产品)提供最全面的功能集:使用映射模板转换请求和响应、按方法限流、结合 API 密钥的使用计划、响应缓存、WAF 集成、X-Ray 跟踪、资源策略以及客户端证书双向 TLS。REST API 支持所有集成类型:Lambda、HTTP、AWS 服务、模拟和 Lambda 代理。当您需要转换、缓存或使用计划等高级功能时,请使用 REST API。
HTTP API:低延迟低成本的替代方案
HTTP API 的设计目标是成为 REST API 更简单、更便宜且更快速的替代方案。它仅支持Lambda 代理和HTTP 代理集成,不支持 AWS 服务集成和模拟集成。主要优势包括:成本最高可比 REST API 降低 70%、延迟更低、内置原生的OIDC 和 OAuth 2.0 JWT 授权(常见授权场景无需 Lambda 授权方)以及自动部署。如果您不需要缓存、使用计划或请求/响应转换,HTTP API 是更好的选择。
# Create a simple HTTP API
aws apigatewayv2 create-api \
--name 'MyHttpAPI' \
--protocol-type HTTP \
--target 'arn:aws:lambda:us-east-1:123456789012:function:MyLambda'WebSocket API:双向实时通信
WebSocket API 在客户端与服务器之间维护持久的双向连接。与 HTTP 的请求-响应模式不同,WebSocket 允许服务器随时向已连接的客户端推送消息,而无需客户端轮询。API Gateway 管理 WebSocket 连接,并根据路由表达式将消息路由到 Lambda 函数。实时应用适合使用 WebSocket API,例如聊天应用、实时控制面板、协同编辑、游戏和股票行情推送。
WebSocket 路由和连接管理
WebSocket API 内置三个路由:$connect(客户端打开连接时触发)、$disconnect(连接关闭时触发)以及 $default(捕获不匹配的消息)。您可以添加自定义路由,例如将 sendmessage 映射到特定的 Lambda 函数。使用 @connections 管理 API,您的 Lambda 函数可以利用客户端的连接 ID向已连接的客户端发送消息。
# Send a message to a specific WebSocket client from Lambda
import boto3
gw_client = boto3.client(
'apigatewaymanagementapi',
endpoint_url='https://abc123.execute-api.us-east-1.amazonaws.com/prod'
)
def lambda_handler(event, context):
connection_id = event['requestContext']['connectionId']
gw_client.post_to_connection(
Data='{"type": "message", "text": "Hello!"}',
ConnectionId=connection_id
)功能比较:REST 与 HTTP 与 WebSocket
主要区别如下:
- REST API:功能完整(缓存、使用计划、转换、WAF),成本较高,支持所有集成类型
- HTTP API:仅支持 Lambda/HTTP 代理,成本低 70%,内置 JWT 身份验证,延迟更低,不支持缓存或使用计划
- WebSocket API:持久双向连接,支持服务器推送,按每百万条消息和每分钟连接时间计费
对于 SAA-C03 考试:没有实时或高级功能的 HTTP 问题 → HTTP API。实时推送 → WebSocket。复杂的 API 功能 → REST API。
阶段和部署
API Gateway API 会部署到阶段(例如 dev、staging、prod)。每个阶段都有自己的 URL 和限流设置,并且可以引用特定的部署快照。使用阶段变量(类似于环境变量)为每个阶段设置后端端点参数,例如,让 dev 阶段指向开发 Lambda 别名,让 prod 指向生产别名,而无需复制 API 配置。
# REST API: create a deployment and stage
aws apigateway create-deployment \
--rest-api-id 'abc123' \
--stage-name 'prod'
# Set stage variable
aws apigateway update-stage \
--rest-api-id 'abc123' \
--stage-name 'prod' \
--patch-operations 'op=replace,path=/variables/lambdaAlias,value=prod'自定义域名和基本路径映射
默认情况下,API Gateway URL 包含 API ID(例如 abc123.execute-api.us-east-1.amazonaws.com)。在生产环境中,请创建由 ACM 证书支持的自定义域名,并将其映射到您的 API 和阶段。使用基本路径映射可在一个域名下托管多个 API(例如,api.example.com/orders → 订单 API,api.example.com/users → 用户 API)。自定义域名需要使用 Route 53 别名记录指向 API Gateway 端点。
边缘优化型、区域型与私有 API
REST API 可以部署为三种端点类型:边缘优化型(使用 CloudFront 前端进行全球分发,默认类型)、区域型(不使用 CloudFront,对于同区域客户端或您添加自己的 CloudFront 时延迟更低)以及私有型(只能通过接口 VPC 端点从您的 VPC 内部访问,适用于内部微服务)。HTTP API 支持边缘优化型和区域型。WebSocket API 支持区域型和私有型。当 API 的使用者来自同一区域,或您使用自定义 CloudFront 分配时,请选择区域型。
使用 API Gateway 进行金丝雀部署
API Gateway REST API 支持在阶段上进行金丝雀部署。您可以将一定百分比的流量路由到金丝雀部署(新版本),其余流量继续发送到生产部署。监控金丝雀版本的错误率和延迟;如果运行稳定,则将其提升到 100%。如果出现问题,可将金丝雀权重设为 0 进行回滚。这类似于 Lambda 别名加权路由,可以在无需切换蓝绿环境的情况下安全、渐进地更新 API。
为考试选择正确的 API 类型
用于识别 API 类型的 SAA-C03 考试关键词:“经济实惠的简单 API” → HTTP API;“实时双向通信”、“服务器推送”或“聊天” → WebSocket API;“请求转换”、“使用计划”、“API 密钥限流”或“响应缓存” → REST API。当问题只是“以低成本将 Lambda 暴露为 HTTP 端点”时,应选择 HTTP API。当问题涉及复杂的 API 管理功能或合作伙伴时,通常应选择 REST API。
快速检查
测试您对本课 AWS 解决方案架构师(SAA-C03)概念的理解。
课程回顾
在本课中,您学习了:REST API 以较高成本提供完整的 API Gateway 功能集(缓存、转换、使用计划、WAF);HTTP API 成本低 70%,内置 JWT 身份验证且延迟更低,适合不需要高级功能的 Lambda/HTTP 代理场景;WebSocket API 则通过持久连接为聊天、游戏和实时数据应用提供服务器推送式实时通信。接下来,我们将探索 API Gateway 与 Lambda、HTTP 后端和模拟响应的集成。
常见问题解答
「REST API、HTTP API 与 WebSocket API」课时是免费的吗?
是的 — 「REST API、HTTP API 与 WebSocket API」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AWS Solutions Architect 课程的其余内容,请升级到 CoddyKit PRO。 AWS Solutions Architect 课程共包含 4 节课。
「REST API、HTTP API 与 WebSocket API」这节课中我会学到什么?
了解 REST API(功能丰富)、HTTP API(低延迟、低成本)和 WebSocket API(双向通信)之间的权衡,并进行恰当选择。 你通过在浏览器中直接运行的动手代码来练习 AWS Solutions Architect,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AWS Solutions Architect 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AWS Solutions Architect 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「REST API、HTTP API 与 WebSocket API」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AWS Solutions Architect 课中编写并运行代码吗?
能。每节 AWS Solutions Architect 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- REST API、HTTP API 与 WebSocket API
- 集成:Lambda、HTTP 与模拟
- 授权:IAM、Lambda 授权方与 Cognito
- 节流、缓存与使用计划