

# API Gateway 使用案例
<a name="api-gateway-overview-developer-experience"></a>

以下应用场景部分概述了不同类型的 API Gateway API，以及使用 API Gateway 的不同类型的开发人员。有关 REST API 与 HTTP API 之间的差异的更多详细信息，请参阅[在 REST API 和 HTTP API 之间进行选择](http-api-vs-rest.md)。

**Topics**
+ [使用 API Gateway 创建 REST API](#api-gateway-overview-rest)
+ [使用 API Gateway 创建 HTTP API](#api-gateway-overview-http)
+ [使用 API Gateway 创建 WebSocket API](#api-gateway-overview-websocket)
+ [谁使用 API Gateway？](#apigateway-who-uses-api-gateway)

## 使用 API Gateway 创建 REST API
<a name="api-gateway-overview-rest"></a>

API Gateway REST API 由资源和方法组成。资源是一种逻辑实体，应用程序可以通过资源路径来访问资源。方法与您的 API 用户提交的 REST API 请求以及返回给该用户的相应响应对应。

例如，`/incomes` 可以是代表应用程序用户收入的资源路径。一个资源可以包含一个或多个由适当的 HTTP 动词 (如 GET、POST、PUT、PATCH 和 DELETE) 定义的操作。资源路径和操作的组合构成 API 的方法。例如，`POST /incomes` 方法可以添加调用方获得的收入，`GET /expenses` 方法可以查询报告的调用方支出。

应用程序不需要知道在后端所请求数据的存储位置和提取位置。在 API Gateway REST API 中，前端由*方法请求* 和*方法响应* 封装。API 通过*集成请求*和*集成响应*与后端连接。

例如，使用 DynamoDB 作为后端，API 开发人员会设置集成请求以便将传入方法请求转发到所选的后端。该设置包括适当 DynamoDB 操作的规范、所需的 IAM 角色和策略以及所需的输入数据转换。后端将结果作为集成响应返回到 API Gateway。

要将与指定 HTTP 状态代码的适当方法响应对应的集成响应路由到客户端，您可以配置集成响应，将所需的响应参数从集成映射到方法。然后，您可以根据需要将后端的输出数据格式转换为前端的输出数据格式。API Gateway 让您能够为[负载](https://en.wikipedia.org/wiki/Payload_(computing))定义一个架构或模型，以方便设置正文映射模板。

API Gateway 提供 REST API 管理功能，如下所示：
+ 支持使用 API Gateway 对 OpenAPI 的扩展生成开发工具包和创建 API 文档
+ HTTP 请求的限制

## 使用 API Gateway 创建 HTTP API
<a name="api-gateway-overview-http"></a>

使用 HTTP API，您可以创建比 REST API 具有更低延迟和更低成本的 RESTful API。

您可以使用 HTTP API 将请求发送到 AWS Lambda 函数或任何可公开路由的 HTTP 端点。

例如，您可以创建一个与后端上的 Lambda 函数集成的 HTTP API。当客户端调用您的 API 时，API Gateway 将请求发送到 Lambda 函数并将该函数的响应返回给客户端。

HTTP API 支持 [OpenID Connect](https://openid.net/developers/how-connect-works/) 和 [OAuth 2.0](https://oauth.net/2/) 授权。它们内置了对跨域资源共享 (CORS) 和自动部署的支持。

要了解更多信息，请参阅“[在 REST API 和 HTTP API 之间进行选择](http-api-vs-rest.md)”。

## 使用 API Gateway 创建 WebSocket API
<a name="api-gateway-overview-websocket"></a>

在 WebSocket API 中，客户端和服务器都可以随时相互发送消息。后端服务器可以轻松地将数据推送到连接的用户和设备，从而无需实施复杂的轮询机制。

例如，您可以使用 API Gateway WebSocket API 和 AWS Lambda 来构建无服务器应用程序，以便在聊天室中向个人用户或用户组发送消息以及从个人用户或用户组接收消息。或者，您可以根据消息内容调用后端服务，例如 AWS Lambda、Amazon Kinesis 或 HTTP 端点。

您可以使用 API Gateway WebSocket API 来构建安全的实时通信应用程序，而无需预置或管理任何服务器来管理连接或大规模数据交换。目标使用案例包括实时应用程序，如下所示：
+ 聊天应用程序
+ 实时控制面板，如股票代码
+ 实时提醒和通知

API Gateway 提供 WebSocket API 管理功能，如下所示：
+ 连接和消息的监控和限制
+ 使用 AWS X-Ray 在消息经由 API 传递到后端服务时跟踪消息
+ 易于与 HTTP/HTTPS 端点集成

## 谁使用 API Gateway？
<a name="apigateway-who-uses-api-gateway"></a>

使用 API Gateway 的开发人员有两种：API 开发人员和应用程序开发人员。

API 开发人员创建和部署 API，以便启用 API Gateway 中所需的功能。API 开发人员必须是拥有 API 的 AWS 账户中的用户。

应用程序开发人员通过在 API Gateway 中调用由 API 开发人员创建的 WebSocket 或 REST API 来构建一个正常运行的应用程序以调用AWS服务。

应用程序开发人员是 API 开发人员的客户。应用程序开发人员不需要拥有 ‬AWS 账户，前提是 API 不需要 IAM 权限或通过 ‭[ Amazon Cognito 用户池联合身份‭ ](https://docs.aws.amazon.com/cognito/latest/developerguide/)所支持的第三方联合身份提供商来支持用户授权。此类身份提供商包括 Amazon、Amazon Cognito 用户池、Facebook 和 Google。

### 创建和管理 API Gateway API
<a name="api-gateway-overview-developer-experience-managing-api"></a>

API 开发人员使用名为 `apigateway` 的用于 API 管理的 API Gateway 服务组件来创建、配置和部署 API。

作为 API 开发人员，您可以按照[开始使用 API Gateway](getting-started.md)中所述使用 API Gateway 控制台或者通过调用 [API 参考](api-ref.md) 来创建和管理 API。这一 API 有若干种调用方式。这包括使用 AWS Command Line Interface (AWS CLI)，或使用 AWS 开发工具包。此外，您还可以使用 [AWS CloudFormation 模板](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-reference.html)或（如果是 REST API 和 HTTP API）[适用于 API Gateway 的 OpenAPI 扩展](api-gateway-swagger-extensions.md) 来支持创建 API。

有关提供 API Gateway 的区域以及相关控制服务端点的列表，请参阅 [Amazon API Gateway 端点和配额](https://docs.aws.amazon.com/general/latest/gr/apigateway.html)。

### 调用 API Gateway API
<a name="api-gateway-overview-developer-experience-invoking-api"></a>

应用程序开发人员使用名为 `execute-api` 的用于 API 执行的 API Gateway 服务组件来调用在 API Gateway 中创建或部署的 API。底层编程实体由创建的 API 公开。此类 API 有若干种调用方式。要了解更多信息，请参阅[调用 API Gateway 中的 REST API](how-to-call-api.md)和[调用 WebSocket API](apigateway-how-to-call-websocket-api.md)。