如何将模型与我在 API Gateway 中的 API 集成?

上次更新时间:2020 年 10 月 30 日

我想将一个模型与我在 Amazon API Gateway 中的 API 集成。该如何操作?

简短描述

您可以在 API Gateway 中为您的 API 创建一个模型,以定义负载的数据格式。API Gateway 模型必须使用 JSON schema draft 4。​

执行以下操作将一个模型关联到您的 API:

1.     编写一个模型 schema 并为您的 API 创建一个模型。

2.     将模型关联到 API 方法。

3.     测试模型。

4.     (可选)为模型创建一个映射模板。

5.     部署和测试 API。

解决方法

编写一个模型 schema 并为您的 API 创建一个模型

编写要与您的 API 关联的模型 schema。以下示例模型要求 API 用户必须在请求正文中传递其 UserIDName。此模型还要求 UserIDName 必须是字符串值,并且任何提供的 Age 都必须是 18 或更大的整数值。

注意:此示例使用 application/json

{
  "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "User",
    "type": "object",
    "properties": {
        "UserID": {
            "type": "string"
        },
        "Name": {
            "type": "string"
        },
        "Age": {
            "description": "Age in years",
            "type": "integer",
            "minimum": 18
        }
    },
    "required": ["UserID", "Name"]
}

编写好模型 schema 后,使用 API Gateway 控制台创建模型

将模型关联到 API 方法

1.    在 API Gateway 控制台中打开您的 API。

2.    从导航窗格中,选择资源

3.    选择要与模型关联的 API 方法。

4.    在方法执行窗口中选择方法请求

5.    对于请求验证程序,选择验证正文。然后,选择选中图标以保存您的选择。

6.    展开请求正文。然后,选择添加模型

7.    对于内容类型,输入模型的内容类型(例如“application/json”)。

8.    对于模型名称,选择您创建的模型。

9.    选择选中图标以保存您的选择。

测试模型

1.    从 API 的资源列表中,选择与模型关联的 API 方法。

2.    在方法执行窗口中选择 TEST

3.    对于 Request Body(请求正文),输入一个与您创建的模型 schema 匹配的请求正文。

注意:要测试 application/json 示例模型,您可以使用以下示例请求正文:

{ "UserID": "abc123", "Name":"Ana","Age":21}

4.    选择 Test

5.    如果示例请求正文与模型 schema 匹配,您将收到成功响应。

(可选)为模型创建一个映射模板

如需创建一个映射模板以修改发送到 API 的集成后端的请求,请执行以下步骤:

1.    从 API 的资源列表中,选择与模型关联的 API 方法。

2.    在方法执行视图中,选择集成请求

3.    展开 Mapping Templates (映射模板)

4.    对于 Request body passthrough(请求正文传递),选择 When there are no templates defined (recommended)(当未定义模板时(推荐))。

5.    选择 Add mapping template (添加映射模板)

6.    对于 Content-Type,输入模型的内容类型(例如“application/json”)。然后,选择选中图标以保存您的选择。

7.     对于 Generate template(生成模板),选择您创建的模型。

注意application/json 示例模型显示为:

#set($inputRoot = $input.path('$')) { "UserID" : "$inputRoot.UserID", "Name" : "$inputRoot.Name", "Age" : $inputRoot.Age }

8.     根据要传递给 API 集成后端的值修改模板。

9.    选择 Save(保存)。

部署和测试 API

1.    从导航窗格中,选择资源

2.    选择 Actions。然后选择部署 API

3.    对于部署阶段,选择现有阶段或选择 [新阶段] 以创建阶段。如果您创建了新阶段,则还必须为阶段名称输入名称。

4.    选择 Deploy (部署)

要测试您的 API,请向您的 API 发送一个测试请求,该请求使用与您的模型关联的方法和内容类型。您可以使用 API 开发工具或 curl 命令发送测试请求。此 curl 命令为示例 application/json 模型发送测试请求:

curl -X POST <YOUR-API-URL> -H 'Content-Type: application/json' -d '{ "UserID": "abc123", "Name":"Ana","Age":21}'

发送使用正确方法和内容类型的测试请求后,请验证您是否收到成功的“200 OK”响应。

另外,您还可以发送使用无效响应正文的测试请求。以下请求正文对于 application/json 模型无效,因为它不包含所需的属性用户 ID

{ "Name":"Ana", "Age":21}

发送使用无效响应正文的测试请求后,请验证是否收到 400 错误,并显示类似于“请求正文无效”的消息。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?