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

上次更新日期:2021 年 11 月 17 日

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

解决方法

重要提示:API Gateway 模型必须使用 JSON schema draft 4。​

编写要与您的 REST API 关联的模型 schema。

有关如何编写模型 schema 的信息,请参阅使用模型和映射模板

示例模型 schema

注意:此示例模型使用 application/json 作为原定设置键来选择映射模板,并且需要以下操作:
API 用户必须在请求正文中传递其 UserID名称
UserID名称必须是字符串值。
提供的年龄必须为大于等于 18 的整数值。

{
  "$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"]
}

为您的 REST API 创建模型

按照 在 API Gateway 中创建模型中的说明,使用您编写的 schema 创建模型。

将模型与 API 方法相关联

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

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

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

4.    在 Method Execution(方法执行)窗格中,选择 Method Request(方法请求)。

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

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

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

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

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

测试模型

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

2.    在 Method Execution(方法执行)窗格中,选择 TEST

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

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

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

4.    选择 Test

5.    如果返回的请求正文与模型 schema 匹配,则测试响应成功。

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

注意:您可以通过创建映射模板来修改发送到 API 的集成后端的请求。

要创建映射模板,请执行以下操作:

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

2.    在 Method Execution(方法执行)窗格中,选择 Integration Request(集成请求)。

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(保存)。

部署 REST API 以提交更改

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

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

3.    对于 Deployment stage(部署阶段),选择现有阶段或选择 [New Stage]([新阶段])以创建阶段。
重要提示:如果您创建了新阶段,则还必须为 Stage name(阶段名称)输入名称。

4.    选择 Deploy(部署)。用于向已部署的 API 发出请求的调用 URL

5.    复制调用 URL。

测试 REST API

向您的 API 发送一个测试请求,该请求使用与您的模型关联的方法和内容类型。成功的请求将返回 200 OK 响应。失败的请求将返回 400 状态码。

请使用 API 开发工具或 curl 命令发送测试请求。

有关更多信息,请参阅在 Amazon API Gateway 中调用 REST API

使用 POST HTTP 方法请求并测试 200 OK 响应的 curl 命令示例

注意:此示例命令向示例 application/json 模型发送测试请求。该命令返回 200 OK 响应。

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

(可选)使用 POST HTTP 方法请求并测试 400 状态码的 curl 命令示例

注意:此示例命令中的请求正文无效,因为它不包含必需的示例模型属性 UserID。该命令返回 400 状态码。

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

这篇文章对您有帮助吗?


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